2016-07-01 48 views
1

我有一個項目,其中有多個.jar文件。在過去,我有一個build.xml文件,當時我正在運行Ant,它正在用這些多個罐子創建一個新罐子,而這個全新的罐子被稱爲依賴關係。Maven啓動ant任務,然後使用它作爲依賴項

現在,我切換到maven,我想知道我如何能夠實現這一點。換句話說,如何告訴maven將多個jar構建到一個jar中,然後將其引用爲依賴項?爲了把東西放到更堅實的基礎,我將共享的文件夾結構,我有:

+- mainProject 
+- pom.xml  
+- someGroup 
| +- pom.xml <- refer here 
| +- sampleModule1 
| | +- pom.xml <- build here 
| | +- build.xml 
| | +- first.jar 
| | +- second.jar 

一個在我腦海裏的想法是告訴Maven來調用build.xml,這將創造新的罐子掉那些兩罐,然後使用它作爲依賴項,如下所示:

<dependency> 
     <groupId>someGroup</groupId> 
     <artifactId>org.boofcv</artifactId> 
     <version>1.0.0</version> 
     <scope>system</scope> 
     <systemPath>${project.basedir}/../shared/org.boofcv/brand-new.jar</systemPath> 
    </dependency> 

但是,我懷疑它會起作用,因爲雞蛋問題可能會發生。當我打電話給maven安裝時,創建新的.jar的任務可能發生在maven將其視爲依賴項之後,從而導致錯誤。

有沒有人知道這個解決方法?

+0

停止使用systemPath ...錯誤的方向。你可以通過'refer here'來解釋你的意思嗎?你可以做一個你當前狀態的示例項目,並把它放在github上... – khmarbaise

+0

我正在使用本地存儲庫,並且我想從其他兩個jar中構建一個jar。後來我想用這個新的jar作爲依賴。簡單。 –

+0

「本地資源庫」是什麼意思? '$ HOME/.m2/repository'?從幾個jar構建一個jar可以通過maven-shade-plugin來完成...... – khmarbaise

回答

0

在搜索了更多內容之後,我才知道無法調用一個Ant腳本將這些罐子製作成一個罐子,同時告訴Maven使用最終的罐子。請參見下面的quote

「當使用Maven的Antrun插件時,Maven試圖解決依賴性構建類路徑的AntRun調用,因此你面對一個雞和蛋的問題:你不能宣佈的依賴即會在AntRun執行過程中需要依賴運行,這是行不通的。「

改爲,我的found out插件叫做maven-shade-plugin。它使用小罐子創建了一個大瓶子,我可以在後面的頂層pom.xml中使用它作爲依賴關係,這正是我所要求的。