Maven:重用代码而不使用父母

时间:2015-07-17 12:58:04

标签: xml maven import nexus

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

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

子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>

由于所有父项都位于同一个repo中,我想在所有子POM中重用存储库部分,而不是复制粘贴它。有没有办法做到这一点?

我无法使用这些子项目的公共父项,因为它们各自具有不同的父项,这在本地不可用。

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

2 个答案:

答案 0 :(得分:2)

这是不可能的。 Maven中有三种机制可以将配置分解到可以重用的位置:

  • settings.xml - 您排除了因为某些开发人员可能没有设置它
  • 父POM - 由于您的设置而排除了
  • &#34;导入&#34;从另一个POM - 这在你的情况下不起作用。添加类型&#34; pom&#34;的依赖项和范围&#34; import&#34;仅从目标POM导入托管依赖项,但不从源存储库导入。

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

答案 1 :(得分:0)

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