Maven包阶段:如何依赖来自其他项目的包工件

时间:2015-02-19 17:16:02

标签: maven maven-assembly-plugin

我有这个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在几个项目中构建胖罐,如上所示。通常capsulepackage阶段运行。然后我想将胶囊罐组装成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>

1 个答案:

答案 0 :(得分:1)

确保capsule-maven-plugin的定义出现在maven-assembly-plugin之前。当执行绑定到同一阶段时,Maven使用POM中插件定义的顺序来打破平局。

----编辑----

确保ab的依赖项包含分类器:

<dependency>
    <groupId>theGroup</groupId>
    <artifactId>a</artifactId>
    <version>theVersion</version>
    <classifier>capsule-fat</classifier>
</dependency>

看看是否可以。