我正在使用命令
构建我的多模块项目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部分中声明。)
答案 0 :(得分:0)
选项:
提交A以便您获得最新的更改并且C构建正常
使C依赖于A的特定版本。更新A的版本并使C依赖它
答案 1 :(得分:0)
原来问题与android中的Espresso测试框架有关。 pom.xml中的一个android依赖项设置为<scope>test</scope>
而不是<scope>provided</scope>
,这导致了所描述的麻烦。