我有一个具有以下结构的 projectA-parent:
projectA-parent|
----------------|projectA
----------------|projectA-core
----------------|projectA-api
模块 projectA 简单地定义了对 core 和 api [1] 的依赖关系,因此我可以在其他需要 core 和 api 的项目中定义对 projectA 的依赖关系。我将项目部署到 Archiva (1.4-M2) 的 SNAPSHOT 存储库。
我有另一个项目 X,我在其中定义了对 projectA 的依赖项,今天下午,目标“mvn compile”开始因未解决的编译问题而失败。在对该项目使用“mvn dependency:tree”进行调查后,我发现在 projectA 下,对 projectA-core 的依赖被声明为“运行时”。虽然今天早上是这样的,但我执行了几次 mvn 安装,因为范围是“编译”(参见 [1],其中列出了最新的 pom 定义)。
查看档案,我看到该项目的以下文件(缩写):
projectA-0.0.7-20120712.084920-61-tests.jar
projectA-0.0.7-20120712.084920-61-tests.jar.md5
projectA-0.0.7-20120712.084920-61-tests.jar.sha1
projectA-0.0.7-20120712.084920-61.jar
projectA-0.0.7-20120712.084920-61.jar.md5
projectA-0.0.7-20120712.084920-61.jar.sha1
projectA-0.0.7-20120712.084920-61.pom
projectA-0.0.7-20120712.084920-61.pom.md5
projectA-0.0.7-20120712.084920-61.pom.sha1
projectA-0.0.7-20120712.172412-87-tests.jar
projectA-0.0.7-20120712.172412-87-tests.jar.md5
projectA-0.0.7-20120712.172412-87-tests.jar.sha1
projectA-0.0.7-20120712.172412-87.pom
projectA-0.0.7-20120712.172412-87.pom.md5
projectA-0.0.7-20120712.172412-87.pom.sha1
projectA-0.0.7-20120712.180733-90.pom
projectA-0.0.7-20120712.180733-90.pom.md5
projectA-0.0.7-20120712.180733-90.pom.sha1
这是有趣的部分:如果我从本地 .m2/repository 中删除 projectA,即使我“mvn compile -U”我也会得到 08:49 的版本,而不是 18:07 的版本!这意味着maven 或 archiva正在解决当天的第一个 sNAPSHOT,而不是最近的一个。 为什么会这样,如何解决这个问题?
[1]:
<dependencies>
<dependency>
<groupId>com.projectA</groupId>
<artifactId>projectA-api</artifactId>
<version>${project.version}</version>
<type>jar</type>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>com.projectA</groupId>
<artifactId>projectA-core</artifactId>
<version>${project.version}</version>
<type>jar</type>
<scope>runtime</scope>
</dependency>
</dependencies>