Maven 对其他 Maven 项目的依赖
Maven dependency on other Maven projects
我有多个maven项目,要添加它们之间的依赖关系我只是将它添加到POM中,例如:
<dependency>
<groupId>com.company</groupId>
<artifactId>XMLManagement</artifactId>
<version>1.0</version>
</dependency>
我正在使用 eclipse,在我尝试发布一个 jar 之前,一切 运行 都很好用。
**问题1:**Maven报错是因为在本地仓库找不到自己依赖的其他maven项目的jar,
这意味着我必须弄清楚项目之间的依赖关系,并以正确的顺序进入每个项目 运行 "mvn clean install"
这似乎不合逻辑,因为这是 maven 的主要目的,必须有一种方法告诉 maven 自己做。
**问题 2:**如果项目 A 依赖于 B,而 B 又依赖于 C,并且我想在 A 中使用 C,那么在 Eclipse 中它足以让我在 A 的 POM 中添加 B 并且它可以工作,但是当我 运行 "mvn clean install" maven 抛出一个错误,它缺少对 C 的依赖。
这意味着我必须添加 A 和 C 之间的依赖关系,这没有意义,因为在 eclipse 中我已经在 "Maven Dependencies" 下看到它,所以如果 eclipse 识别它,为什么 mvn clean install 不识别它?
请注意,我能够在最后生成我需要的 jar,但必须经过如上所述的大量努力。
我知道我可以使用 nexus 或 artifactory 之类的东西,但这对我来说太过分了,我希望能够在本地存储库中使用它。
我正在寻找正确的方法,有什么建议吗?
您需要的是一个顶级 pom,其中列出了您希望构建为模块的每个内容。在 Maven 术语中,这称为 reactor build.
类似于:
<groupId>this.that</groupId>
<artifactId>build.root</artifactId>
<name>A name</name>
<packaging>pom</packaging>
<modules>
<module>../a.b</module>
<module>../a.c</module>
试试这个,找到你的文件 settings.xml 如何配置路径存储库:
<localRepository>E:\repositoryMavem</localRepository>
- 使您的 Eclipse(或 IDE 正在使用)支持此文件 settings.xml
- 转到路径后,您的项目有 pom.xml
- 运行 命令
mvn install:install-file -Dfile=E:\repositoryMavem\XMLManagement-1.0.jar -DgroupId=com.company -DartifactId=XMLManagement -Dversion=1.0 -Dpackaging=jar
- 如果你想使用 IDE Eclipse(你可以)。
- 如果 运行 清理工件,您需要 运行 重新安装
我有多个maven项目,要添加它们之间的依赖关系我只是将它添加到POM中,例如:
<dependency>
<groupId>com.company</groupId>
<artifactId>XMLManagement</artifactId>
<version>1.0</version>
</dependency>
我正在使用 eclipse,在我尝试发布一个 jar 之前,一切 运行 都很好用。
**问题1:**Maven报错是因为在本地仓库找不到自己依赖的其他maven项目的jar, 这意味着我必须弄清楚项目之间的依赖关系,并以正确的顺序进入每个项目 运行 "mvn clean install"
这似乎不合逻辑,因为这是 maven 的主要目的,必须有一种方法告诉 maven 自己做。
**问题 2:**如果项目 A 依赖于 B,而 B 又依赖于 C,并且我想在 A 中使用 C,那么在 Eclipse 中它足以让我在 A 的 POM 中添加 B 并且它可以工作,但是当我 运行 "mvn clean install" maven 抛出一个错误,它缺少对 C 的依赖。 这意味着我必须添加 A 和 C 之间的依赖关系,这没有意义,因为在 eclipse 中我已经在 "Maven Dependencies" 下看到它,所以如果 eclipse 识别它,为什么 mvn clean install 不识别它?
请注意,我能够在最后生成我需要的 jar,但必须经过如上所述的大量努力。
我知道我可以使用 nexus 或 artifactory 之类的东西,但这对我来说太过分了,我希望能够在本地存储库中使用它。
我正在寻找正确的方法,有什么建议吗?
您需要的是一个顶级 pom,其中列出了您希望构建为模块的每个内容。在 Maven 术语中,这称为 reactor build.
类似于:
<groupId>this.that</groupId>
<artifactId>build.root</artifactId>
<name>A name</name>
<packaging>pom</packaging>
<modules>
<module>../a.b</module>
<module>../a.c</module>
试试这个,找到你的文件 settings.xml 如何配置路径存储库:
<localRepository>E:\repositoryMavem</localRepository>
- 使您的 Eclipse(或 IDE 正在使用)支持此文件 settings.xml
- 转到路径后,您的项目有 pom.xml
- 运行 命令
mvn install:install-file -Dfile=E:\repositoryMavem\XMLManagement-1.0.jar -DgroupId=com.company -DartifactId=XMLManagement -Dversion=1.0 -Dpackaging=jar
- 如果你想使用 IDE Eclipse(你可以)。
- 如果 运行 清理工件,您需要 运行 重新安装