Maven在检查nexus之前构建依赖项

时间:2014-10-07 00:42:58

标签: java android maven nexus android-espresso

我正在使用命令

构建我的多模块项目
mvn clean deploy -DskipTests

这个项目有3个maven模块:A,B,C。

A并不依赖于任何事情。

B并不依赖任何东西。

C取决于A。

我得到一个非常奇怪的场景,maven看到C依赖于A然后而不是从源代码构建A它决定检查它的nexus(因为我的.m2本地存储库不包含A)和它取出了旧版本的A.然后它继续构建所有内容,但是当它到达C时,它使用旧版本的A并失败。

如果我在离线模式下运行我的构建,那么它工作得很好,但问题是我确实想在完成后在nexus中部署我的新工件,并且maven离线模式限制我这样做。

我想知道我是否做了一些非常奇怪的事情,这似乎是一个非常容易处理的场景。

编辑:如果我登录nexus并手动删除所有旧工件,然后使用上面提供的命令构建,一切正常。

编辑2:C依赖于A"提供"范围,如:

 <dependency>
     <groupId>com.test</groupId>
     <artifactId>application</artifactId>
     <scope>provided</scope>
     <type>jar</type>
 </dependency>

(版本在父pom的dependencyManagement部分中声明。)

2 个答案:

答案 0 :(得分:0)

选项:

  1. 提交A以便您获得最新的更改并且C构建正常

  2. 使C依赖于A的特定版本。更新A的版本并使C依赖它

答案 1 :(得分:0)

原来问题与android中的Espresso测试框架有关。 pom.xml中的一个android依赖项设置为<scope>test</scope>而不是<scope>provided</scope>,这导致了所描述的麻烦。