我是很贊成每個Maven項目約定中的一個工件。話雖這麼說,如果你需要一個單一產物包含所有類的所有模塊的,然後做一個專門的單個項目這樣做:
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>your-group-id</groupId>
<artifactId>one-jar-to-rule-them-all</artifactId>
<version>your-version</version>
<dependencies>
<dependency>
<groupId>your-group-id</groupId>
<artifactId>module-1</artifactId>
<version>your-version</version>
</dependency>
.
.
.
<dependency>
<groupId>your-group-id</groupId>
<artifactId>module-5</artifactId>
<version>your-version</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-shade-plugin</artifactId>
<version>2.4.2</version>
<configuration>
<!--
This restricts the jar to classes from your group;
you may or may not want to do this.
-->
<artifactSet>
<includes>
<include>your-group-id</include>
</includes>
</artifactSet>
<createDependencyReducedPom>true</createDependencyReducedPom>
</configuration>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>shade</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
</project>
這個例子項目取決於每個模塊上然後使用maven-shade-plugin
將所有這些模塊組合到一個jar工件中。你也可以把它作爲你父母project-xxx
的孩子模塊,這樣它就可以被反應堆建成。這樣,您可以同時擁有一個war和一個uber jar,但仍然保持標準Maven構建的模塊化。
謝謝!我幾乎是在相同的方向,但沒有意識到「陰影」插件。那是失蹤的一塊。 –