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.
控制对其的访问
我有几个项目需要从存储在存储库中的不同 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.
控制对其的访问