我有一个 pom 文件,它构建了一个利用各种 Spring 模块的独立应用程序,特别是它使用了集成文件模块。最初我的 pom 文件使用 Maven Assembly 插件,但它创建的 uber jar 没有正确运行。进一步的研究似乎表明程序集插件中存在一个错误,它基本上会破坏 uber jar 中的依赖关系。推荐的解决方法是 Shade 插件,它适合我。
但是,程序集插件能够创建一个包含 uber jar 和其他资源(属性文件、脚本等)的 zip 文件。然后您可以使用该 zip 将其解压缩并运行您的脚本,该脚本将调用您的 jar 并传入其他项目(例如)。据我所知,阴影插件不会执行此附加功能。
我已经尝试使用配置文件组合 shade 和 assembly 插件,但我不知道如何让它使用 shade 插件来构建 uber jar,然后使用 assembly 插件来构建 zip其他东西。
有人做过类似的事情吗?我只需要能够创建我的 uber jar,然后用脚本、xml 和其他项目压缩 uber jar。
有没有办法在不将它绑定(bind)到阶段的情况下运行程序集插件?如果有的话,我可以运行 package 并运行 shade 插件,然后独立运行 assembly 插件?如果可能的话,这将解决我的问题。
最佳答案
这个答案有点晚了,但我和你有相同的场景(“打包阶段”:1. 构建带有阴影的 uber-jar,2. 将其打包到 assembly zip 中)我所要做的就是改变pom.xml
中指定插件的顺序。
如果在组装之前指定了 shade,它会在同一阶段之前执行。
关于java - 使用像汇编插件一样的maven shade插件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20591993/