如果在父pom中配置了存储库,我的pom如何找到我的父pom?

时间:2012-01-05 20:52:47

标签: maven nexus

我已经将我的各种项目中的所有存储库配置重构为我创建的父pom,以便为repo和分发管理等内容提供单点配置。据我所知,这应该是最佳实践。在部署我的父pom到nexus服务器,然后尝试运行我的子项目。他们找不到我的父母pom。 。 。这对我来说是有道理的,因为他们不知道关于nexus回购的父母pom。 。 。看起来像鸡蛋和鸡蛋的东西?我错过了一些明显的东西吗?

2 个答案:

答案 0 :(得分:10)

确实,您的项目需要知道在何处查找存储库以下载其依赖项。但在进入外部存储库之前,Maven将检查您的本地存储库以查看它所需的工件是否在那里。您的本地存储库是否包含父pom?如果没有,您可以通过运行

添加它
mvn install
父pom上的

问题可能是由于将父pom直接部署到Nexus,绕过了本地pom。您可以通过使用

部署来避免此问题
mvn deploy

这将首先在本地安装工件,然后将其部署到外部存储库(在您的情况下为Nexus)。更多详情:http://maven.apache.org/guides/introduction/introduction-to-the-lifecycle.html

如果您的父母pom是由他人构建和部署的,那么这将无济于事。您可以在项目的pom或本地settings.xml中指定存储库。一种常见的方法是期望所有开发人员在其本地settings.xml中包含一个存储库定义,该定义指向您的Nexus存储库,并将其用作所有其他存储库的镜像。然后,您可以在Nexus中配置所需的每个外部存储库,并让它检索您需要的任何依赖项。我对Nexus不熟悉,但可以在此处找到有关镜像的更多详细信息:http://maven.apache.org/guides/mini/guide-mirror-settings.html

答案 1 :(得分:4)

您必须维护每个子级(maven模块)的存储库定义,这是构建过程中的主要最佳实践:“使构建可移植”。

任何开发人员/系统都应该能够构建任何模块而不依赖于父模块或其他模块的源依赖关系,只能使用存储库引用。