我正在使用mvn release-plugin
和assembly-plugin
来部署具有依赖性的jar。当我使用mvn release
时,它工作正常。它会创建两个文件:普通XXX.jar
和XXX.jar-with-dependencies.jar
,并将它们都部署。
但我还需要使用mvn deploy
将快照部署到另一个存储库。在这个存储库中,我只需要没有依赖项的XXX.jar。
所以我希望我可以使用mvn deploy
部署快照版本而不依赖于设置。
POM.xml设置:
...
<plugin>
<artifactId>maven-assembly-plugin</artifactId>
<version>2.5.2</version>
<configuration>
<descriptorRefs>
<descriptorRef>jar-with-dependencies</descriptorRef>
</descriptorRefs>
</configuration>
<executions>
<execution>
<id>make-assembly</id> <!-- this is used for inheritance merges -->
<phase>install</phase> <!-- bind to the packaging phase -->
<goals>
<goal>single</goal>
</goals>
</execution>
</executions>
</plugin>
...
PS:mvn clean install deploy
将由jenkins scm pulling
每天早上安排。
答案 0 :(得分:3)
由maven-assmbly-plugin
生成的工件会自动附加到项目中,因此在您调用mvn deploy
时会进行部署。
您可以做的是定义一个配置文件(例如'with-dependencies'),您可以在其中执行程序集插件。在这种情况下,如果您致电mvn deploy
,它将构建一个-SNAPSHOT版本并将其推送到快照存储库,对于该版本,您必须调用mvn release:prepare release:perform -Pwith-dependencies
<profile>
<id>with-dependencies</id>
<plugins>
<plugin>
<artifactId>maven-assembly-plugin</artifactId>
<version>2.5.2</version>
<configuration>
<descriptorRefs>
<descriptorRef>jar-with-dependencies</descriptorRef>
</descriptorRefs>
</configuration>
<executions>
<execution>
<id>make-assembly</id> <!-- this is used for inheritance merges -->
<phase>install</phase> <!-- bind to the packaging phase -->
<goals>
<goal>single</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</profile>