我有一個多模塊項目,即Maven的模塊依賴源的代替存儲庫罐子
parent
module1
module2
在一個dev的週期,我添加了一個類mod1.A
到Module。 module2中的類mod2.B
取決於它。我的地方.m2/repository
沒有文物。在一個錯誤的線沿線的
$ cd prj/module2
$ mvn -o exec:java -Dexec.mainClass=mod2.B
結果:運行此
The following artifacts could not be resolved: com.example:module1:jar:1.0-SNAPSHOT
我通過mvn install
而在prj
文件夾中安裝工件後,這一切都按預期工作。
然而,這呈現在至少兩個方面的問題:
- 我不得不通過速度較慢的安裝階段,而不是更快的編譯階段
- 我有同樣的項目,並相互矛盾的兩個版本這些修改。我無法與他們各自的修改,只有當前已安裝的修改即可運行同一個Java類,考慮到他們都是相同的快照版本
有兩種解決方法(跳過構建的部分爲第一,不同的快照版本對於第二個),但它們在實踐中還遠遠不可用。
有沒有辦法讓maven使用本地模塊,而不是使用本地maven倉庫中的工件?
從父母本身運行Maven,請參閱http://stackoverflow.com/questions/33131880/maven-multi-module-project-cannot-find-sibling-module。您可以在'parent'的POM上運行'mvn clean package',Maven將正確解析模塊間依賴關係,無需安裝任何東西。 – Tunaki
謝謝@Tunaki - 適用於'mvn clean package',但看起來像'mvn exec:java'在這種情況下不起作用。也許是因爲如果有多個具有相同名稱的類,它不知道要從哪個子模塊執行exec?我也嘗試了http://stackoverflow.com/questions/11091311/maven-execjava-goal-on-a-multi-module-project,但這並沒有幫助,解決了我在問題中給出的相同人爲因素。 –
是的,這很正常。您應該將執行'exec:java'目標綁定到特定階段(如'包 ')。或者你可以建立一個單一的模塊,如下所示http://stackoverflow.com/a/3899772/1743880 –
Tunaki