4

我有一个 pom 文件,它构建了一个利用各种 Spring 模块的独立应用程序,特别是它使用了 integration-file 模块。最初我的 pom 文件使用了 Maven Assembly 插件,但它创建的 uber jar 没有正确运行。进一步的研究似乎表明组装插件中存在一个错误,该错误基本上会弄乱 uber jar 中的依赖项。推荐的解决方法是适用于我的 Shade 插件。

但是,程序集插件能够创建一个包含 uber jar 和其他资源(属性文件、脚本等)的 zip 文件。然后,您可以使用该 zip 将其解压缩并运行您的脚本,该脚本将调用您的 jar 并传入其他项目(例如)。据我所知,阴影插件没有执行此附加功能。

我已经尝试使用配置文件组合阴影和程序集插件,但我不知道如何让它使用阴影插件来构建 uber jar,然后使用程序集插件与其他东西一起构建 zip。

有没有人做过类似的事情?我只需要能够创建我的 uber jar,然后用脚本、xml 和其他项目压缩 uber jar。

有没有办法在不将其绑定到阶段的情况下运行程序集插件?如果有,我可以运行 package 并运行 shade 插件,然后独立运行程序集插件?如果可能的话,那将解决我的问题。

4

2 回答 2

4

这个答案有点晚了,但我和你有同样的场景(“包阶段”:1.用阴影构建uber-jar,2.将它打包到程序集中),我所要做的就是改变顺序中指定了哪些插件pom.xml

如果在组装之前指定了阴影,则它会在同一阶段之前执行。

于 2014-05-28T17:27:55.543 回答
2

在多模块项目中使用单独的模块来组装 zip 是一种常见的做法。还有appassembler-maven-plugin可能对您来说很有趣(不过我自己从未使用过它)。

关于在没有阶段的情况下运行插件:这总是可能的。执行目标页面上指定的全名。在这种情况下org.apache.maven.plugins:maven-assembly-plugin:2.4:single,或简而言之assembly:single

不要尝试使用配置文件来解决这个问题,它们不是为此而设计的。

于 2013-12-15T10:37:35.330 回答