2010-06-03 121 views
5

我有兩個Maven項目: 項目-API 項目IMPL國米項目依賴Maven中

項目IMPL的POM規定了項目API的依賴。頂級聚合pom列出了模塊project-api和project-impl。

如果我在頂層運行編譯,依賴關係可以正確解析。如果我在project-impl上運行compile,那麼它找不到依賴項目api。我如何設置maven以便在project-impl編譯時首先編譯並收集其對其他項目的依賴關係?

回答

6

你只能做的是從根項目

mvn -pl child -am 

這將建立自己的子項目,並在同一棵樹也都依賴。一般來說,當你有一個多模塊項目時,你應該始終從父項目構建,而不是從子項目構建。如果你只是想建立一個或兩個孩子的項目,這樣做:

mvn -pl child 

OR

mvn -pl child2,child3 

(項目的child2和child3是建立,但child1和child4都沒有)

+1

+1反應堆高級選項是要走的路線 – 2010-06-04 14:02:55

+0

mvn-pl-am作品。 – 2010-06-04 18:48:06

1

您需要依賴於impl模塊的POM中的api。

當你在頂層項目上編譯時,reactor會找出構建東西的正確順序。

要單獨構建project-impl,必須先'mvn install'project-api模塊,否則它將找不到正確的依賴關係。

如果你在一個團隊中工作,一個自動構建服務器將工件推送到一箇中央存儲庫可以幫助緩解這裏的痛苦,因爲這可能會導致你瘋了。

這一切工作得很好,但ot工程的「maven」方式,這並不總是像我們人類會做的事情。