maven在存储库中使用本地jar而不是去远程仓库

时间:2015-11-28 12:56:35

标签: maven dependencies maven-3

设定:

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>

1 个答案:

答案 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将从中央存储库下载。