说我有一个父项目(仅限pom)和几个模块。你怎么不重复模块poms中的同一groupId知道groupId可以从他们的父继承,但我也想将父artifactId添加到模块的groupId端。
e.g。在父母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>
自动接收my.proj.xyz的groupId而不仅仅是my.proj,因为更有意义的是保持父级下的模块不要将它们并排放置。
谢谢。
答案 0 :(得分:2)
不建议参数化groupId
。此外,这不是你要求的,因为你只是不想完全列出该条目。这需要改变Maven的工作方式,而且我个人觉得你不太可能按照自己的方式行事,因为影响太大了。
现在,如果它与父母一样,你可以省略groupId
。
也许您可以从致电父母com.proj:xyz
更改为com.proj.xyz:parent
来解决问题。
答案 1 :(得分:1)
显然,您无法从父级继承该组并同时更改它。您可以将父groupId
和artifactId
用作模块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
答案 2 :(得分: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>
你的父母:
<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是具有不同模块结构的指标。