我有这个Maven项目结构:
-- top
-- a
produces a.jar and a-capsule-fat.jar
-- b
produces b.jar and b-capsule-fat.jar
-- pkg
produces all.tar.gz, which contains a-capsule.jar and b-capsule.jar
我正在使用capsule-maven-plugin
在几个项目中构建胖罐,如上所示。通常capsule
在package
阶段运行。然后我想将胶囊罐组装成tar.gz
用于部署目的。我正在使用项目maven-assembly-plugin
中的pkg
来制作tar。
但maven-assembly-plugin
通常也会在package
阶段运行,并且在创建胶囊罐之前运行。
我可以指定一个程序集依赖关系或排序,强制maven首先创建囊袋吗?或者,我可以在稍后的阶段构建程序集,但后来没有合适的程序(在install
中?没有post-package
)。
POST-ANSWER:我正在为后代包括一些工作代码:
pkg/pom.xml
中的
依赖关系:
<dependency>
<groupId>thegroup</groupId>
<artifactId>a</artifactId>
<version>theVersion</version>
<type>jar</type>
<classifier>capsule-fat</classifier>
</dependency>
<dependency>
<groupId>thegroup</groupId>
<artifactId>b</artifactId>
<version>theVersion</version>
<type>jar</type>
<classifier>capsule-fat</classifier>
</dependency>
pkg/pom.xml
中的程序集插件设置:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-assembly-plugin</artifactId>
<executions>
<execution>
<id>build-tar</id>
<phase>package</phase>
<goals>
<goal>single</goal>
</goals>
</execution>
</executions>
<configuration>
<descriptors>
<descriptor>src/main/assembly/pkg.xml</descriptor>
</descriptors>
</configuration>
</plugin>
pkg.xml(上面引用):
<assembly xmlns="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.2"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.2 http://maven.apache.org/xsd/assembly-1.1.2.xsd">
<id>ustc-archive-pkg</id>
<formats>
<format>tar.gz</format>
</formats>
<dependencySets>
<dependencySet>
<includes>
<include>*:jar:capsule-fat</include>
</includes>
</dependencySet>
</dependencySets>
</assembly>
答案 0 :(得分:1)
确保capsule-maven-plugin的定义出现在maven-assembly-plugin之前。当执行绑定到同一阶段时,Maven使用POM中插件定义的顺序来打破平局。
----编辑----
确保a
和b
的依赖项包含分类器:
<dependency>
<groupId>theGroup</groupId>
<artifactId>a</artifactId>
<version>theVersion</version>
<classifier>capsule-fat</classifier>
</dependency>
看看是否可以。