3

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

1 回答 1

2

您的项目A(' '或' ')的包装是什么。它只存在08:49 的“”人工制品。jarpomjar

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

于 2012-07-12T20:02:35.973 回答