1

我有一个多模块 maven 设置,我想将其中一个 jar 及其依赖项打包在一起,而其他所有的 jar 都可以保持原样。我的配置如下所示:

根:

<project...>
    <modelVersion>4.0.0</modelVersion>
    <name>Foo</name>
    <artifactId>Foo</artifactId>
    <groupId>org.example</groupId>
    <version>1.0</version>
    <packaging>pom</packaging>

     <modules>
         <module>Bar1</module>
         <module>Bar2</module>
         <module>Bar3</module>
     </modules>
 </project>

模块(Bar1):

<project...>
    <modelVersion>4.0.0</modelVersion>
    <name>Foo - Bar1</name>
    <artifactId>Bar1</artifactId>
    <groupId>${project.parent.groupId}</groupId>

    <parent>
        <artifactId>Foo</artifactId>
        <groupId>org.exmaple</groupId>
        <version>1.0</version>
    </parent>

    <build>
        <finalName>Bar1</finalName>
        <plugins>
        ...
            <plugin>
                <artifactId>maven-assembly-plugin</artifactId>
                <configuration>
                    <archive>
                        <manifest>
                        <mainClass>org.exmaple.bar1.Main</mainClass>
                        </manifest>
                    </archive>
                    <descriptorRefs>
                        <descriptorRef>jar-with-dependencies</descriptorRef>
                    </descriptorRefs>
                </configuration>
            </plugin>
            ...
        </plugins>
    </build>
</project>

运行mvn package后会给我模块的所有 jar/war 文件。但是要生成具有依赖关系的 jar,我必须切换到模块并另外触发程序集cd Bar1; mvn assembly:single

是否有机会更改设置,以便在mvn package构建包含依赖项的罐子之一之后?

干杯。

4

2 回答 2

1

将程序集插件包含到包阶段的执行中:

<plugin>
 <groupId>org.apache.maven.plugins</groupId>
  <artifactId>maven-assembly-plugin</artifactId>
  <configuration>
    <descriptor>src/assembly/bin.xml</descriptor>
    <finalName>apache-maven-cookbook-${pom.version}</finalName>
  </configuration>
  <executions>
    <execution>
      <phase>package</phase>
      <goals>
        <goal>single</goal>
      </goals>
    </execution>
  </executions>
</plugin>

Maven 组装页面所述

于 2012-10-17T13:12:13.927 回答
0

您需要为程序集插件定义一个执行。否则不会执行。该插件的站点可能有点误导,因为有一个配置部分看起来像你的。但是,如果您希望执行实际发生,则需要对其进行定义。

于 2012-10-17T13:12:05.230 回答