我有一个具有以下结构的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依赖:树"在那个项目中,我发现,在projectA下,对projectA-core的依赖被声明为" runtime"。今天早上就是这样,我执行了几次mvn安装,因为范围是"编译" (见[1],其中列出了最新的pom定义)。
查看archiva,我看到此项目的以下文件(缩写):
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 /存储库中删除projectA,即使我" mvn编译-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>
答案 0 :(得分:2)
您的projectA(“jar
”或“pom
”)的打包是什么。它只存在于08:49的'jar
'人工制品。
我认为您将包装更改为“pom
”。因此,如果您将库声明为其他项目中的依赖项,则必须设置<type>pom</type>
。