首页 > 解决方案 > 异常关系设置中的Maven无法访问父pom

问题描述

我有一个 Maven 项目,我需要共享 2 个级别的常见项目特征。

一层是项目范围的东西,比如远程 Maven 仓库(Artifactory)、插件版本、deps 版本。

另一个是操作到 Maven 生命周期的复杂映射,为特殊运行时平台的“模块”共享。

父母嵌套:

com.mycompany:projectfoo-parent
  ^-- parent of:
      com.mycompany:projectfoo-module-parent

每个子项目如下所示:

subprojectA/pom.xml  [ROOT]          <--parent-- projectfoo-parent
subprojectA/modules/ModuleX/pom.xml [MODULE] <--parent-- projectfoo-module-parent
subprojectA/modules/ModuleY/pom.xml [MODULE] <--parent-- projectfoo-module-parent

所有父母都在远程 Maven 存储库(SNAPSHOTS)中。

现在,在绿色领域(例如 CI 或 with -Dmaven.repo.local=localRepo)构建时会出现问题:

    [FATAL] Non-resolvable parent POM for com.mycompany:projectfoo-moduleX:1.0.0-SNAPSHOT: Could not find artifact com.mycompany:projectfoo--module-parent:pom:1.0.0-SNAPSHOT and 'parent.relativePath' points at no local POM @ line 9, column 13
    [FATAL] Non-resolvable parent POM for com.mycompany:projectfoo-moduleY:1.0.0-SNAPSHOT: Could not find artifact com.mycompany:projectfoo--module-parent:pom:1.0.0-SNAPSHOT and 'parent.relativePath' points at no local POM @ line 9, column 13

-X表明 Maven 甚至没有向远程仓库询问这些 POM。

我试图将公司的远程 Maven 存储库放置到父级、模块父级、到settings.xml模块的 pom.xml,......没有任何帮助。

我应该怎么做才能让 Maven 在远程仓库中查找这些父 POM?

我的设置是否有效?还是要求(Maven)子模块的父模块必须是包含它的子模块<modules>据我所知,子模块可以有任意父级。

对我来说,一个解决方法可能是在运行 Maven 之前将父 POM 和install它们带到本地 repo,因为一旦它在那里,构建就可以正常工作。这也意味着id 和版本都很好。此外,我检查了 repo ID 和凭据在settings.xml. 为 repo 启用了快照。Maven 文档在这里

标签: mavenparent-pom

解决方案


推荐阅读