_remote.repositories 阻止 maven 解析远程父级

_remote.repositories prevents maven from resolving remote parent

我在公司 Nexus 实例的 releases 存储库中有我公司的父 pom。

我有 <mirrorOf>external:*,!central</mirrorOf> 的镜像设置,我不想代理中心,因为我们的 Nexus 有点慢。

当我有一个 Maven 项目时,父项目设置如下:

<parent>
    <groupId>com.acme.maven</groupId>
    <artifactId>parent-pom</artifactId>
    <version>2</version>
    <relativePath />
</parent>

并且 parent-pom 项目在本地存储库中不可用构建将失败——这是目前预期的结果。

但是,如果我使用 dependency:get 目标下载 parent-pom,pom 文件将下载到本地存储库。但是,当我尝试构建项目时,它失败了:

 [exec] [ERROR]   The project com.acme:test:0.0.1-SNAPSHOT (/home/acme/pom.xml) has 1 error
 [exec] [ERROR]     Non-resolvable parent POM: Failure to find com.acme.maven:parent-pom:pom:2 in http://repo.maven.apache.org/maven2 was cached in the local repository, resolution will not be reattempted until the update interval of central has elapsed or updates are forced and 'parent.relativePath' points at no local POM @ line 5, column 13 -> [Help 2]

现在,如果我从 .m2/repository/com/acme/maven/parent-pom/2/ 中删除 _remote.repositories 文件(并且只删除该文件),构建将会成功。

我有某种解决方法,但是 从 maven 存储库中手动删除内部文件听起来不是个好主意。如何避免呢? 我也不知道为什么会这样,一些解释将不胜感激。

其他方法:


_remote.repositories内容:

#NOTE: This is an Aether internal implementation file, its format can be changed without prior notice.
#Mon Sep 14 19:59:41 CEST 2015
parent-pom-2.pom>internal-repo=

我认为答案是here:

Maven 3.0+ enforces that downloaded artifacts were resolved from a repository url/id that matches an url available for the current session.

..

IIRC there is a CLI option that you can enabled in Maven 3.1.1 that tells Maven "I know what I am doing and don't make that check this time" i.e. --legacy-local-repository

确实将 --legacy-local-repository 添加到 dependency:get 调用使其 而不是 产生 _remote.repositories,而 parent-pom 可以是已解决。

Ant 的 dependencies 任务行为,我认为,可以使用 Maven 2 代码来解释。