Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/maven/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用maven shade插件,如组装插件_Java_Maven_Maven Assembly Plugin_Maven Shade Plugin - Fatal编程技术网

Java 使用maven shade插件,如组装插件

Java 使用maven shade插件,如组装插件,java,maven,maven-assembly-plugin,maven-shade-plugin,Java,Maven,Maven Assembly Plugin,Maven Shade Plugin,我有一个pom文件,它构建了一个利用各种Spring模块的独立应用程序,特别是它使用了集成文件模块。最初我的pom文件使用Maven Assembly插件,但它创建的uber jar没有正确运行。进一步的研究似乎表明,汇编插件中存在一个bug,它基本上扰乱了uberjar中的依赖关系。推荐的解决方法是Shade插件,它适合我 但是,汇编插件能够创建包含uber jar和其他资源(属性文件、脚本等)的zip文件。然后,您可以使用该zip来解压它并运行脚本,该脚本将调用您的jar并传入其他项(例如)

我有一个pom文件,它构建了一个利用各种Spring模块的独立应用程序,特别是它使用了集成文件模块。最初我的pom文件使用Maven Assembly插件,但它创建的uber jar没有正确运行。进一步的研究似乎表明,汇编插件中存在一个bug,它基本上扰乱了uberjar中的依赖关系。推荐的解决方法是Shade插件,它适合我

但是,汇编插件能够创建包含uber jar和其他资源(属性文件、脚本等)的zip文件。然后,您可以使用该zip来解压它并运行脚本,该脚本将调用您的jar并传入其他项(例如)。就我所知,shade插件并没有做这个附加功能

我曾尝试使用配置文件将shade插件和assembly插件组合在一起,但我不知道如何让它使用shade插件构建uber jar,然后使用assembly插件构建zip和其他东西

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


有没有一种方法可以在不将程序集插件绑定到某个阶段的情况下运行该程序集插件?如果有的话,我可以运行包并运行shade插件,然后独立运行assembly插件?如果可能的话,这将解决我的问题。

在多模块项目中使用单独的模块只是为了组装zip是一种常见的做法。还有一个可能会让你感兴趣的方法(尽管我自己从来没有用过)

关于运行没有阶段的插件:这总是可能的。执行目标页面上指定的全名。在本例中,
org.apache.maven.plugins:maven汇编插件:2.4:single
,或者简而言之,
assembly:single


不要试图用概要文件来解决这个问题,它们不是用来解决这个问题的。

现在回答这个问题有点晚了,但我有和你一样的场景(“打包阶段”:1.用shade构建uber jar,2.将其打包到汇编zip中),我所要做的就是改变在
pom.xml
中指定插件的顺序


如果在组装之前指定了shade,那么它将在同一阶段之前执行。

如果您包含POM的关键部分,可能会有所帮助。在打包阶段之后调用assembly:single对我有用!我还删除了配置文件。谢谢