为什么Maven要从远程仓库下载一个模块

Why does Maven want to download a module from a remote 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>

为什么要从远程仓库中抓取中间层?

目前,一切都处于快照模式。

中间层依赖:

<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 调用安装。

Maven 经常打印关于正在下载它实际上不是在下载的东西的消息。它正在考虑远程可用的快照比本地构建的最后一个快照更新的可能性。这就是为什么上传快照通常是一个非常糟糕的主意。

我找到了答案。

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

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

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

抱歉浪费您的时间。 :)