【问题标题】:Maven multimodule project tries to download inner dependency from repositoryMaven 多模块项目尝试从存储库下载内部依赖项
【发布时间】:2020-10-30 13:41:18
【问题描述】:

我有一个交叉依赖的经典多模块项目

父pom:

<modules>
    <module>mod1</module>
    <module>mod2</module>
</modules>
...
<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>grp</groupId>
            <artifactId>mod1</artifactId>
            <version>${project.version}</version>
        </dependency>
...

mod2 pom:

<dependencies>
    <dependency>
      <groupId>grp</groupId>
      <artifactId>mod1</artifactId>
    </dependency>
 ...

它可以很好地构建 mvn clean install,但是当 CI 使用 mvn sonar:sonar ... 运行声纳时,maven 会尝试从 repo 下载 mod1 快照依赖项,这应该是同一个反应器的一部分。

Downloading from nexus: http://...mod1/1.0.0-SNAPSHOT/maven-metadata.xml

在大多数情况下它找不到快照,因为它尚未部署,但它会继续运行。但是,它会减慢构建速度,因为我有几个模块,每个模块都需要一段时间才能往返存储库。

为什么?

【问题讨论】:

    标签: java maven multi-module


    【解决方案1】:

    我有一个非常相似的问题:mvn install 工作正常,mvn sonar:sonar 不是。

    在我的例子中,它是一个测试依赖:

    <dependency>
      <groupId>grp</groupId>
      <artifactId>mod2</artifactId>
      <version>${project.version}</version>
      <type>test-jar</type>
      <scope>test</scope>
    </dependency>
    

    通过在mvn 命令中添加test-compile 解决了:

    mvn test-compile sonar:sonar
    

    我从这个答案中得到了提示:https://stackoverflow.com/a/57226037/5269825

    我猜 maven 需要一些东西(比如 compile 或 compile-test)才能知道依赖项是另一个子模块。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-04-19
      • 2013-10-08
      • 2010-12-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多