我的问题摘要:在一个多模块项目中,其中一个模块依赖于另一个模块。使用maven-shade-plugin
构建此模块的超级jar时,所有依赖项都被正确包含,但不包含其他模块的依赖项。
我有一个多模块项目,具有以下架构:
pom.xml (parent pom)
--module_1
----pom.xml
--module_2
----pom.xml
module_2
依赖于module_1
,在其pom.xml中声明:
<groupId>${project.groupId}</groupId>
<artifactId>module_1</artifactId>
<version>${project.version}</version>
<scope>compile</scope>
我想构建一个module_2
的超级jar,我使用maven-shade-plugin
,声明如下:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-shade-plugin</artifactId>
<version>2.3</version>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>shade</goal>
</goals>
</execution>
</executions>
</plugin>
这会产生一个超级罐子:
module_2
module_1
有没有办法指定包含module_1
的所有依赖项?
我找到的解决方案是使用module_1
来建立一个maven-shade-plugin
的超级jar。因为这个jar包含在module_1
的超级jar中,所以它可以工作。但我想避免使用此解决方案,以便能够发布一个module_2
的简单jar文件,而不包括其依赖项。
我想使用module_1
而不是maven-shade-plugin
(因为它可以更好地控制最终jar中包含的文件)
按照@ user2321368的要求提供更多详细信息
maven版本:Apache Maven 3.0.3(r1075438; 2011-02-28 18:31:09 + 0100)
module_1的pom.xml,其中包含了它的依赖项:(范围和版本在依赖关系管理部分的父pom中声明)
maven-assembly-plugin