首页 > 解决方案 > 如何不从 settings.xml 服务器中提取模块(依赖项)?

问题描述

我有以下项目包结构。

parent
|- module1
|- module2    
|- module3

我能够将 module3 作为依赖项包含在 module1 和 module2 的 pom.xml 文件中。这使我可以访问 module3 中的所有依赖项和代码。

<dependency>
    <groupId>my.group</groupId>
    <artifactId>module3</artifactId>
    <version>1.0.0</version>
</dependency>

但是,当我dependency:tree在 module1 或 module2 的 pom 文件上运行 maven 命令时,maven 将尝试搜索<servers>我的 settings.xml 文件中列出的某些内容,以便尝试下载 module3 作为工件。module3 目前没有部署到任何地方<server>,因此 maven 命令失败并出现以下错误

[ERROR] Failed to execute goal on project module1: Could not resolve dependencies for project my.group:module1:jar:1.0.0-SNAPSHOT: Failed to collect dependencies at my.group:module3:jar:1.0.0-SNAPSHOT: Failed to read artifact descriptor for my.group:module3:jar:1.0.0-SNAPSHOT: Could not transfer artifact my.group:module3:jar:1.0.0-SNAPSHOT from/to MyServer (https://example): Access Denied to: .......etc.

理想情况下,module3 根本不会被部署为工件,而是可能只是具有<packaging>pom</packaging>. module3 只是一些只能由 module1 和 module2 使用的模块。此外,仅供参考,module3 的依赖树构建得非常好。

标签: javamavenmaven-module

解决方案


  1. 依赖项永远不应该是包装的pom。需要正确的 JAR 并且还需要部署到存储库。

  2. 通常,您在多模块项目的父级上运行构建命令。如果要将构建限制为一个模块,请使用-pl.


推荐阅读