Можно ли избежать развертывания артефакта, созданного в соответствии с пакетом проекта, во время обработки 'deploy: deploy' ?
Я имею в виду следующее:
- предположим, у нас есть 'pom.xml' для веб-приложения и определим тип упаковки как 'war' ;
- мы хотим собрать либо '*. War' артефакт, либо '*. Zip' , который содержит наше приложение, а также контейнер сервлета;
- мы хотим развернуть только этот '*. Zip' артефакт во время обработки 'deploy: deploy' ;
т.е. Я хочу иметь возможность запустить 'mvn deploy' и имеет следующие результаты:
- 'myapp.war' построен;
- 'myapp-standalone.zip' построен;
- 'myapp-standalone.zip' развернут в целевом удаленном репозитории (обратите внимание, что я не беспокоюсь, если 'myapp.war' установлен здесь в локальный репозиторий );
Я проверил документация 'war: war' и нашел параметр 'primaryArtifact' . Однако в нем упоминается только локальный репозиторий.
Я попробовал следующее POM, но оно все еще развертывает '*. War' или '*. Zip' в удаленном хранилище:
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.mygroup</groupId>
<artifactId>myapp</artifactId>
<packaging>war</packaging>
<version>1.0-SNAPSHOT</version>
<name>myapp</name>
<url>http://maven.apache.org</url>
<dependencies>
<!-- dependencies go here -->
</dependencies>
<build>
<plugins>
<! -- plugins like 'compiler' etc -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<configuration>
<primaryArtifact>false</primaryArtifact>
</configuration>
</plugin>
<plugin>
<artifactId>maven-assembly-plugin</artifactId>
<executions>
<execution>
<id>myapp-standalone</id>
<phase>package</phase>
<goals>
<goal>single</goal>
</goals>
<configuration>
<descriptors>
<descriptor>src/main/assembly/standalone.xml</descriptor>
</descriptors>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
<distributionManagement>
<repository>
<-- target repository information -->
</repository>
<snapshotRepository>
<-- target repository information -->
</snapshotRepository>
</distributionManagement>
</project>
Кажется, что я могу получить желаемое поведение, объявив упаковку проекта как 'pom' и вручную сконфигурировав все моджо, подразумеваемые упаковкой 'war' ( 'resources: resources ', ' компилятор: компилировать ', ' resources: testResources ', ' компилятор: testCompile ', ' surefire: test ', 'war: war' , 'install: install' , 'deploy: deploy' ). Однако это сделало бы POM довольно многословным, и я бы хотел этого избежать.
Насколько я понимаю, в Maven всегда есть артефакт, подразумеваемый типом упаковки проекта, как один из артефактов проекта. Но неясно, что пользователь Maven должен делать, если он хочет получить артефакт, который не соответствует ни одному из типов упаковки по умолчанию (например, одиночный '*. Zip' архив).
Есть мысли?
С уважением, Денис