繁体   English   中英

将同一父pom下的模块的公共groupId移动到Maven中的单个位置

[英]Moving common groupId of modules under the same parent pom to a single place in Maven

说我有一个父项目(仅pom)和几个模块。 知道可以从其父级继承groupId的情况下,如何不重复在模块poms中重复相同的groupId,但是我也想将父artifactId添加到模块的groupId末尾。

例如在父母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(最好也可以删除parent,但是我知道在当前的Maven中是不可能的),然后编写

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

自动接收my.proj.xyz的groupId而不是仅接收my.proj,因为将模块保持在父级下比将它们并排设置更有意义。

谢谢。

不建议参数化groupId 另外,这也不是您要的,因为您只是不想完全列出该条目。 这将需要更改Maven的工作方式,而且我个人认为您不太可能继续前进,因为影响会太大。

现在,你已经可以离开了groupId如果是一样的父母。

也许您可以从调用父com.proj:xyz更改为com.proj.xyz:parent来解决他的问题。

显然,您不能从父级继承该组,而必须同时对其进行更改。 您可以将父代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 -element添加到pom.xml。 另外,maven抱怨groupId不应包含表达式,而应包含一个常量。

我建议命名父my.proj.xyz:xyz-parent以便模块可以直接继承父groupId

根据您编写的内容,结构如下所示:

   +-- 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:

<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是具有不同模块结构的指示符。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM