2013-12-15 48 views
3

我有一个pom文件,它构建了一个独立的应用程序,它利用了各种Spring模块,特别是它使用了集成文件模块。最初我的pom文件使用Maven Assembly插件,但它创建的超级jar无法正确运行。进一步的研究似乎表明,程序集插件中存在一个错误,它基本上破坏了uber jar中的依赖关系。推荐的解决方法是Shade插件,它为我工作。使用maven遮罩插件like assembly plugin

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

我已经尝试过使用配置文件组合阴影和组装插件,但我无法弄清楚如何让它使用阴影插件来构建超级jar,然后使用assembly插件来构建zip其他的东西。

有没有人做过类似的事情?我只需要能够创建我的超级罐子,然后用脚本,XML和其他项目压缩超级罐子。

有没有办法运行程序集插件,而没有将其绑定到阶段?如果有的话,我可以运行包并运行阴影插件,然后独立运行程序集插件?如果可能的话,这将解决我的问题。

+0

如果您包含POM的关键部分,它可能会有所帮助。 – Raedwald

回答

2

在多模块项目中使用单独模块来组装zip是一种常见做法。也有appassembler-maven-plugin这可能对你很有趣(但我从来没有用过它)。

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

不要尝试用配置文件解决这个问题,它们不是为了这个。

+0

调用程序集:在包阶段为我工作后单个!我也删除了配置文件。谢谢! – Jon

3

这个答案有点晚了,但我和你有相同的场景(“包装阶段”:1.用遮光罩制作超级罐子,2.将它包装成装配拉链),我所要做的就是更改pom.xml中指定插件的顺序。

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

相关问题