2013-01-15 109 views
2

我想包裝一個由我的代碼+依賴關係組成的遮陽罐。我能夠打包一切正常,但由於我使用DataNucleus(datanucleus-core,datanucleus-api-jdo,datanucleus-rdbms),因此他們的plugin.xml位於其根目錄中。我嘗試使用帶有陰影的XmlAppendingTransformer,但由於這些xml的根元素只是<plugin>變換器將所有<extension>元素合併成一個巨大的<plugin>標記,並且在運行時DataNucleus類加載器無法找到正確的插件。所以我的問題是:maven包JDO依賴與遮陽罐

1)是否將所有依賴包打包到1個jar中是一個好習慣?或者我應該複製依賴關係到一個文件夾中並在運行時在類路徑中包含該文件夾? 2)如果我想用我的jar打包DataNucleus,如何處理多個plugin.xml的?我試圖將它們放在<plugins>根標籤中,但這也不起作用。他們必須在根文件夾中嗎?我可以在陰影過程中將它們移動到不同的文件夾嗎?

回答

0

所有plugin.xml(Eclipse OSGi插件)都必須位於CLASSPATH的根目錄下,因此您必須將它們合併。同樣,你需要合併META-INF/MANIFEST.MF(OSGi元數據)的內容。

好習慣?我不會以某種方式爭論。對你的環境和項目做一些正確的事情。

如果您找到可靠合併的方式,請告訴我們,以便DN文檔能夠幫助那些想要做這種事情的人。其他人已經嘗試過之前,一些職位上stackoverflow IIRC

+0

嗯...我剛剛結束了不包括org.datanucleus:*從陰影的罐子。其餘的是陰影。對於啓動命令的類路徑中額外的幾個jar是沒有什麼大不了的,但是當你的類路徑中有50個jar時它看起來很糟糕。這是唯一的原因。有些人只喜歡把所有的罐子放在一個罐子裏。我自己更喜歡它,但這是我相信的品味問題。 :) –