[英]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
来解决他的问题。
显然,您不能从父级继承该组,而必须同时对其进行更改。 您可以将父代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
-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.