e.g。 项目A有poms
<groupId>project-a</groupId>
<artifactId>parent</artifactId>
<version>1.0</version>
和
<groupId>project-a</groupId>
<artifactId>parent</artifactId>
<version>2.0</version>
由完全不同的团队实施的项目B有这个父pom
<groupId>project-b</groupId>
<artifactId>parent</artifactId>
<version>0.1</version>
<modules>
<module>child-extends-from-project-a-version-1.0</module>
<module>child-extends-from-project-a-version-2.0</module>
</modules>
以及从项目A延伸的一些子项目
<parent>
<groupId>project-a</groupId>
<artifactId>parent</artifactId>
<version>1.0</version>
</parent>
<groupId>project-b.child</groupId>
<artifactId>child-extends-from-project-a-version-1.0</artifactId>
"some common stuff"
<parent>
<groupId>project-a</groupId>
<artifactId>parent</artifactId>
<version>2.0</version>
</parent>
<groupId>project-b.child</groupId>
<artifactId>child-extends-from-project-a-version-2.0</artifactId>
"some common stuff"
如何在一个地方将这些“常见的东西”分组,而不是在每个儿童pom中重复?
答案 0 :(得分:1)
(我删除了我的旧答案,因为我误解了你的问题,抱歉)
有方法,但有点麻烦。由于长期计划的Maven片段尚未实现,您可以使用tiles-maven-plugin:
https://github.com/maoo/maven-tiles
Tiles插件允许您将外国poms“导入”您的模型。因此,您将为“常见的东西”创建一个单独的pom:
<project>
<modelVersion>4.0.0</modelVersion>
<groupId>common</groupId>
<artifactId>common-stuff</artifactId>
<packaging>pom</packaging>
<version>1.0</version>
<name>"Common Stuff"</name>
"Common stuff"
</project>
在您的实际子POM中,您将tiles插件作为扩展名(可能在您的真正父pom中):
<build>
<plugins>
<plugin>
<groupId>it.session.maven.plugins</groupId>
<artifactId>tiles-maven-plugin</artifactId>
<version>${maventiles.plugin.version}</version>
<extensions>true</extensions>
</plugin>
</plugins>
</build>
现在你可以使用属性导入常见的东西了(我对使用属性不太满意,但是它有效):
<properties>
<tile.1>common:common-stuff:1.0</tile.1>
</properties>
因此,您的有效POM包含子项目本身以及导入的公共事物工件中的元素。
该插件有点专有,但对于正常使用的情况,它可以很好地退出。