Maven正在寻找Archiva最古老的快照 - 为什么?

时间:2012-07-12 19:21:25

标签: maven archiva

我有一个具有以下结构的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>

1 个答案:

答案 0 :(得分:2)

您的projectA(“jar”或“pom”)的打包是什么。它只存在于08:49的'jar'人工制品。

我认为您将包装更改为“pom”。因此,如果您将库声明为其他项目中的依赖项,则必须设置<type>pom</type>