maven-shade-plugin不包含uber jar中其他模块的依赖项

时间:2014-07-10 14:13:35

标签: java maven maven-shade-plugin uberjar

我的问题摘要:在一个多模块项目中,其中一个模块依赖于另一个模块。使用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
  • 的jar
  • 不包括<{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

0 个答案:

没有答案