为什么Maven想从远程存储库下载模块

时间:2015-02-16 12:09:20

标签: java maven repository

在我的pom.xml中给出以下模块

<modules>
  <module>core</module>
  <module>middle-layer</module>
  <module>top-layer</module>
<modules>

顶层依赖于依赖于核心的中间层。

当我运行clean install时,它将成功构建并安装核心层和中间层,但不会创建顶层。它尝试从远程存储库下载中间层,而不是使用本地存储库中新构建的中间层。

我的pom.xml中有一个自定义远程存储库:

 <repositories>
    <repository>
        <id>custom</id>
        <url>http://someaddress/maven2/</url>
        <snapshots>
            <updatePolicy>never</updatePolicy>
        </snapshots>
        <releases>
            <updatePolicy>never</updatePolicy>
        </releases>
    </repository>
</repositories>

为什么要从远程存储库中获取中间层?

目前,一切都处于SNAPSHOT模式。

中间层依赖:

<dependencies>
    <dependency>
        <groupId>mygroup</groupId>
        <artifactId>core</artifactId>
        <version>2.0.1-SNAPSHOT</version>
    </dependency>
</dependencies>

顶层依赖:

<dependencies>
    <dependency>
        <groupId>mygroup</groupId>
        <artifactId>middle-layer</artifactId>
        <version>2.0.1-SNAPSHOT</version>
    </dependency>
</dependencies>

他们都是父母的版本(目前在2.0.1-SNAPSHOT)和我从父pom调用安装。

2 个答案:

答案 0 :(得分:1)

Maven经常打印有关下载事实的下载信息。它正在考虑有可能远程提供比本地最后一个版本更新的快照。这就是为什么上传快照通常是一个非常糟糕的主意。

答案 1 :(得分:0)

我找到了答案。

这是键盘和椅子之间的典型问题。

中间层实际上是历史上的WAR,而不是JAR,也就是说:它包括我顶层所需的一些类。 (当然,它并不是真正称为中间层)。 所以top-layer搜索middle-layer.jar并找不到它(因为它是一个WAR)。

所以我必须重构一些东西,以便从中间层到新的库JAR中获取我需要的东西,并使中间层和顶层依赖于它。

抱歉浪费你的时间。 :)