2010-07-20 104 views
1

我有兩個項目,「appA」和「appB」,每個項目都依賴於第三個項目「common」。我正在將它們從螞蟻移動到maven,但我有一些困難找出最好的方法來做到這一點在maven中。我的文件夾結構如下所示:兩個不同的項目,在maven中有一個共享依賴項目

root 
+ common 
+ appA 
+ appB 

我已經能夠父母的pom.xml添加到根和有共同的,和的appA作爲appB的這個父項目獲得的appA和appB的打造模塊,但這不是我想要的,因爲appA和appB是完全不相關的項目,所以root pom.xml不合適。

我想要appA和appB是獨立的maven項目,它們都依賴於第三個通用項目,並在必要時構建它,以便我可以進入appA或appB文件夾並鍵入「mvn package」分別建立appA + common或appB + common。這是我在Ant中設置的方式,但在maven中可能沒有合適的平行。任何幫助或推動正確的方向是非常感謝:)

回答

0

(...)但這不是我想要的,根pom.xml是不適當的,因爲appA和appB是完全無關的項目。

那就不要做了,如果你不想和剛剛宣佈common如在appA的POM的依賴,並在appB的POM不使用聚合。事情是這樣的:

<project> 
    <modelVersion>4.0.0</modelVersion> 
    <groupId>foo</groupId> 
    <artifactId>appA</artifactId> 
    <packaging>jar</packaging> 
    <version>X-SNAPSHOT</version> 
    ... 
    <dependencies> 
    <dependency> 
     <groupId>bar</groupId><!-- at your discretion --> 
     <artifactId>common</artifactId> 
     <version>Y.Z-SNAPSHOT</version> 
    </dependency> 
    ... 
    </dependencies> 
    ... 
</project> 

依賴通過本地倉庫解決,這樣你就必須mvn installcommon項目第一(和任何變更後,使他們「可見」)。

在開發過程中,通常的做法是在IDE中導入依賴項目,並將其配置爲依賴項目內部的工作空間(vs二進制相關性)。這節省了install步驟以使更改可見。大多數IDE都支持這種方法。

+0

這就是我認爲它會工作的方式,但我無法弄清楚如何參考通用項目,而不必將其作爲父項目的一部分。有沒有辦法在依賴中使用相對路徑?我需要在某個地方使用「../common」來告訴它項目在哪裏,對嗎? – jgor 2010-07-20 21:03:33

+0

@jgor:不,通過本地存儲庫解決依賴關係問題,您必須在common項目上運行'install'以將其安裝在本地存儲庫中。 – 2010-07-20 21:14:47

+0

謝謝!我沒有完全理解本地存儲庫的概念。我現在至少有一個簡單的例子。 – jgor 2010-07-20 21:27:35

相關問題