maven - 如何使用依赖项构建uberjars

时间:2012-04-10 21:28:18

标签: maven applet uberjar

我有一个生成jar文件的maven模块。我被要求开发一些其他的uberjar文件 作为构建过程的副产品。我也被告知这两个jar文件是applet jar文件 将需要包含来自maven模块的依赖项的一些类。

我环顾四周,缩小到这三个选项 -

  1. Maven Assembly plugin - 这可以从maven模块生成的类构建自定义jar。不能包含第三方依赖项。
  2. 通过Maven使用ant - 使用maven-dependency-plugin解压缩依赖关系,然后通过ant脚本打包applet jar。
  3. 使用Maven shade plugin - 虽然这个插件并不直接适合我的要求,但我可以使用它。
  4. 虽然我可以使用(b)和(c)工作,但我无法决定使用哪一个。我注意到的一个关键因素是使用依赖插件非常耗时。

    我想知道人们是否有其他方式可以达到同样的要求。

2 个答案:

答案 0 :(得分:4)

您可以使用带有dependencySet元素的程序集插件包含依赖项,请参阅:

具体来说,这是一个取自Andrew E Bruno's blog的例子:

<dependencySets>
  <dependencySet>
    <outputDirectory></outputDirectory>
    <outputFileNameMapping></outputFileNameMapping>
    <unpack>true</unpack>
    <scope>runtime</scope>
    <includes>
      <include>commons-lang:commons-lang</include>
      <include>commons-cli:commons-cli</include>
    </includes>
  </dependencySet>
</dependencySets>

答案 1 :(得分:0)

我最后使用上面描述的相同方法使用了程序集插件。 我离开了阴影插件,因为我使用来自maven外部的资源生成了几个程序集,而shade插件对这些任务没有很大的支持。