我有一个多模块maven设置,我想在其中包装一个带有依赖关系的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
其中一个jar包含依赖项后构建?
干杯。
答案 0 :(得分: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>
所述
答案 1 :(得分:0)
您需要为程序集插件定义执行。否则它将不会被执行。插件的网站可能有点误导,因为有一个关于配置的部分看起来像你的。但是如果你想要实际执行,你需要定义它。