2013-09-27 45 views
0

說我有一個父項目(只有pom)和幾個模塊。你如何不重複模塊poms中的同一groupId知道groupId可以從父類繼承,但我也想將父artifactId添加到模塊的groupId末尾。將共同的groupId模塊在同一個父pom下移動到Maven的一個地方

例如內部父POM,我有

<groupId>my.proj</groupId> 
<artifactId>xyz</artifactId> 
<version>1</version> 
在每個模塊

那麼,現在,我需要寫

<parent> 
    <groupId>my.proj</groupId> 
    <artifactId>xyz</artifactId> 
    <version>1</version> 
</parent> 
<groupId>my.proj.xyz</groupId> 
<artifactId>mod-a</artifactId> 

每個模塊。但我要的是擺脫常見的groupId的(最好的,如果家長也可被刪除,但我知道這是不可能在目前的Maven),和只寫

<parent> 
    <groupId>my.proj</groupId> 
    <artifactId>xyz</artifactId> 
    <version>1</version> 
</parent> 
<artifactId>mod-a</artifactId> 

自動接收的的groupId my.proj.xyz,而不僅僅是my.proj,因爲將模塊保留在父類之下是相對保持並排的。

謝謝。

回答

2

建議不要將groupId參數化。此外,這不是你要求的,因爲你只是不想完全列出該條目。這將需要改變Maven的工作方式,並且我個人覺得你不可能一路走開,因爲影響太大了。

現在,如果它與父項相同,則可以省略groupId

也許你可以從打電話給父母com.proj:xyz改爲com.proj.xyz:parent來解決他的問題。

1

顯然,你不能從父母繼承組,並在同一時間改變它。您可以使用父母groupIdartifactId財產模塊groupId

<parent> 
    <groupId>my.proj</groupId> 
    <artifactId>xyz</artifactId> 
    <version>1</version> 
</parent> 
<groupId>${project.parent.groupId}.${project.parent.artifactId}</groupId> 
<artifactId>mod-a</artifactId> 

,但你仍然需要添加groupId - 元素到pom.xml中。 maven也抱怨groupId不應該包含表達式,而是一個常量。

我建議命名父my.proj.xyz:xyz-parent所以這些模塊可以直接繼承父母groupId

0

基於你寫你的結構是這樣的:

+-- groupId: my.proj artifactId: xyz 
     +--- groupId: my.proj.abc artifactId: mod-a 
     +--- groupId: my.proj.abc artifactId: mod-b 
     +--- groupId: my.proj.abc artifactId: mod-c 
     +--- groupId: my.proj.xyz artifactId: mod-a 
     +--- groupId: my.proj.xyz artifactId: mod-b 
     +--- groupId: my.proj.xyz artifactId: mod-c 

是用於改變你的結構的指標到這樣的事情:

+-- groupId: my.proj artifactId: xyz 
     +--- groupId: my.proj.abc artifactId:abc-parent 
     ! +--- groupId: my.proj.abc artifactId: mod-a 
     ! +--- groupId: my.proj.abc artifactId: mod-b 
     ! +--- groupId: my.proj.abc artifactId: mod-c 
     ! 
     +--- groupId: my.proj.xyz artifactId:xyz-parent 
      +--- groupId: my.proj.xyz artifactId: mod-a 
      +--- groupId: my.proj.xyz artifactId: mod-b 
      +--- groupId: my.proj.xyz artifactId: mod-c 

這將導致有poms看起來像這樣:

父pom。XML:

<groupId>my.proj</groupId> 
<artifactId>xyz</artifactId> 
<version>1-SNAPSHOT</version> 

<modules> 
    <module>abc-parent</module> 
    <module>xyz-parent</module> 
</modules> 

您的ABC-父:

<parent> 
    <groupId>my.proj</groupId> 
    <artifactId>xyz</artifactId> 
    <version>1-SNAPSHOT</version> 
</parent> 

<groupId>my.proj.abc</groupId> 
<artifactId>abc-root</artifactId> 

您的ABC-MOD-A:

<parent> 
    <groupId>my.proj.abc</groupId> 
    <artifactId>abc-root</artifactId> 
    <version>1-SNAPSHOT</version> 
</parent> 

<artifactId>mod-a</artifactId> 

您的XYZ-父:

<parent> 
    <groupId>my.proj</groupId> 
    <artifactId>xyz</artifactId> 
    <version>1-SNAPSHOT</version> 
</parent> 

<groupId>my.proj.xyz</groupId> 
<artifactId>xyz-root</artifactId> 

您XYZ- mod-a:

<parent> 
    <groupId>my.proj.xyz</groupId> 
    <artifactId>xyz-root</artifactId> 
    <version>1-SNAPSHOT</version> 
</parent> 

<artifactId>mod-a</artifactId> 

通常在每個模塊中更改groupId是具有不同模塊結構的指示器。

相關問題