设定:
Project A
Project B
Project A use Project B as dependency
通过父机制(它们都转到顶级父级,其中包含所有依赖关系)。他们也有自己的父级层次结构。 我想使用本地构建的Project B和强制maven来使用它而不是从Remote repo中拉出来(我们使用nexus)。我试过-o选项,但它不起作用。什么是maven停止寻找远程依赖关系并使用本地构建的依赖关系在提交之前测试本地更改的最佳方式。
编辑 - 添加XML以供参考
<?xml version="1.0"?>
<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 ...">
<modelVersion>4.0.0</modelVersion>
<groupId>com.rockoder.myproject</groupId>
<artifactId>myproject-parent</artifactId>
<version>1.0.1-main-iteration-01-SNAPSHOT</version>
<packaging>pom</packaging>
<name>myproject Top Parent</name>
<description>This is the root of all projects. Versions and metadata are being specified here</description>
<scm... </scm>
<distributionManagement>...</distributionManagement>
<properties>...</properties>
<dependencyManagement>
<dependencies>
....
<dependency>
<groupId>com.rockoder.myproject</groupId>
<artifactId>Project B</artifactId>
<version>1.0.1-01-SNAPSHOT</version>
<type>pom</type>
</dependency>
<dependency>
<groupId>com.rockoder.myproject</groupId>
<artifactId>Project A</artifactId>
<version>1.0.1-01-SNAPSHOT</version>
<type>pom</type>
</dependency>
</dependencies>
</dependencyManagement>
<repositories>...</repositories>
<pluginRepositories> .... </pluginRepositories>
<build>....</build>
<profiles>...</profiles>
</project>
答案 0 :(得分:1)
正如@Tunaki评论的那样:您必须安装父POM,以确保所有模块都已构建,请参阅Maven by Example - Chapter 6. A Multi-Module Project:
使用包含所有WAR文件的
simple-weather
项目。为此,您需要以适当的顺序编译和安装两个项目;由于simple-webapp
取决于simple-weather
,因此需要在simple-weather
项目可编译之前创建simple-webapp
JAR。为此,您将从simple-parent
项目运行mvn clean install命令:
如果您没有安装父POM,则必须首先安装Project B POM,然后安装Project A POM。
Maven只会从远程存储库加载依赖项,如果依赖项不在本地存储库中,或者远程存储库中存在较新的SNAPSHOT
版本,请参阅Introduction to Repositories:
在Maven中下载是由一个项目触发的,该项目声明本地存储库中不存在的依赖项(或者
SNAPSHOT
,当远程存储库包含一个较新的依赖项时)。默认情况下,Maven将从中央存储库下载。