2013-12-15 94 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中指定插件的順序。

如果在裝配之前指定了陰影,則會在同一階段之前執行陰影。

相關問題