Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Xml Maven:重用代码而不使用父级_Xml_Maven_Import_Nexus - Fatal编程技术网

Xml Maven:重用代码而不使用父级

Xml Maven:重用代码而不使用父级,xml,maven,import,nexus,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>

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

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>

com公司
父-x
child-x
儿童X
由于所有父对象都位于同一个repo中,因此我希望在所有子pom中重用repositories部分,而不是复制粘贴它。有办法做到这一点吗

我不能对这些子项目使用公共父项目,因为它们都有一个不同的父项目,这在本地是不可用的


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

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

  • settings.xml-您排除了它,因为某些开发人员可能没有设置它
  • 家长POM-由于您的设置,您也排除了这一点
  • 从另一个POM“导入”-这在您的情况下不起作用。添加类型为“pom”且作用域为“import”的依赖项只会从目标pom导入托管依赖项,而不会从源存储库导入托管依赖项

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

在POM中配置存储库是一项重要任务。您应该使用存储库管理器,在那里发布顶级POM,并通过settings.xml控制对它的访问。

我强烈建议您敦促其他开发人员将存储库添加到他们的settings.xml中。这将有助于他们完成工作——正如您所说,这看起来是一个可行的解决方案。不幸的是,这不是一个选项。在公司设置中,开发人员的settings.xml应该始终保持不变,这意味着设置了一个存储库管理器来处理所有这些。您可以添加访问存储库的凭据之类的内容。如果开发人员没有设置settings.xml,那就是他们的问题。将存储库放在pom中是非常糟糕的做法。顺便问一下:您在哪里部署您的工件?此外,从不同的父级继承听起来是错误的,因为插件版本等默认值应该在公司范围内定义……父级有一个共同的祖先,在那里管理插件版本。