2011-04-07 108 views
1

我希望能夠將我的項目拆分成Maven子模塊,並將它們重用爲其他項目的Maven依賴項。重用maven模塊作爲依賴關係

正如我從文檔瞭解,子模塊必須指定他們的父項目。這使得它們不適合作爲依賴關係重用。

這使得在模塊分裂遠沒有吸引力恕我直言。或者我錯過了什麼?

我傾向於在需要分享項目時拆分組件中的項目。否則,爲什麼要麻煩?

有人可以詳細說明嗎?

是否有可能聲明一個模塊沒有指定它的父級? 如何重構依賴項和所有依賴項目?

歡呼聲

回答

1

relativePath只是構建時的提示。一旦安裝了所有的模塊和父代,您可以將各個模塊稱爲其他項目中的依賴項。

1

據我所知, 子模塊必須指定他們的 父項目。這使得它們 不適合作爲 依賴項重用。

指定父項目不會使模塊不適合作爲依賴項。大多數模塊都有一個父pom,它定義了常見的依賴/插件和其他東西。例如,請參閱Spring依賴關係。

是否可以聲明模塊 沒有指定它的父項?

每個模塊都是一個單獨的maven項目。因此,它不需要父母。通常,在模塊的分層結構中,每個模塊都在folderand父pom位於模塊的父文件夾中。父pom通常構建所有模塊。

| 
--- module 1 
    | 
    --- pom.xml 
| 
--- module 2 
    | 
    --- pom.xml 
| 
pom.xml <-- parent pom 

在沒有父pom的情況下,您需要單獨構建每個模塊。

請參考this SO的討論。

+0

父母poms和pom項目是有用的,毫無疑問。但文檔說你必須在模塊中指定父代。所以如果你想重複使用,爲另一個項目說一個項目的服務器模塊,你怎麼做到的? ' | ---服務器模塊 | --- pom.xml ---客戶端模塊 ' – nodje 2011-04-12 10:37:00

+0

@nodje。查看彈簧模塊(彈簧芯或彈簧腹板)的POM文件。這些模塊可以在任何項目中使用,並且具有* parent *聲明。 – Raghuram 2011-04-12 10:46:48

0

父poms和pom項目是有用的,毫無疑問。但文檔說你必須在模塊中指定父代。所以如果你想重用,爲另一個項目說一個項目的服務器模塊,你怎麼做到的?

| 
--- server 
    | 
    --- pom.xml 
| 
--- client 
    | 
    --- pom.xml 
| 
--- webapp 
    | 
    --- pom.xml 
| 
--- Pom project 1 
    | 
    <modules> 
     <module>../server 
     <module>../client 
| 
--- Pom project 2 
    | 
    <modules> 
     <module>../server 
     <module>../webapp 

隨着上述例子中,根據該文檔,服務器項目應該指定POM項目1作爲父母,和POM項目2爲好。

在這種情況下,你如何處理模塊和依賴關係概念的混合?