Maven:重用代码而不使用 parents

Maven: Reusing code without using parents

我有几个项目需要从存储在存储库中的不同 parent 继承。

child-1 -> parent-1 (in repo)
child-2 -> parent-2 (in repo)
...

child pom.xml 看起来像这样:

<project>
    <parent>
        <groupId>com.company</groupId>
        <artifactId>parent-x</artifactId>
        <relativePath/>
    </parent>

    <artifactId>child-x</artifactId>
    <name>Child X</name>

    <repositories>
        <repository>
            <!-- REPO WHERE PARENT IS LOCATED -->
        </repository>
    </repositories>
</project>

由于所有 parent 都位于同一个存储库中,我想在所有 child POM 中重用存储库部分,而不是 copy-pasting。有办法吗?

我不能为这些 child 项目使用通用的 parent,因为它们每个都有不同的 parent,这在本地不可用。

此外,将存储库添加到 settings.xml 不是一个选项,因为此代码将被其他可能没有正确 setting.xml set-up 的开发人员重用。

这是不可能的。 Maven 中有三种机制可以将配置提取到可以重用的地方:

  • settings.xml - 你排除了,因为一些开发者可能没有设置它
  • 父 POM - 由于您的设置,您也排除了它
  • "importing" 来自另一个 POM - 这对你的情况不起作用。添加类型为 "pom" 范围为 "import" 的依赖项只会从目标 POM 而不是源存储库导入托管依赖项。

我个人建议使用 settings.xml 并为开发人员编写文档 - 或者 - 如果您可以将父 POM 发布到 Maven Central 或一些内部公司存储库,您可以从那里使用它们以及所有开发人员都可以访问。

在 POM 中配置存储库是一件 well known Maven anti-pattern。您应该使用存储库管理器并在那里发布您的顶级 poms 并通过 settings.xml.

控制对其的访问