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

时间:2015-09-14 18:20:51

标签: maven maven-3 nexus maven-dependency-plugin

我在公司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项目在本地存储库中不可用,构建将失败 - 这是到目前为止所预期的。

但是,如果我使用parent-pom目标下载dependency:get,则会将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]

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

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

其他方法:

  • maven-ant任务dependencies任务工作_remote.repositories文件根本不显示)
  • 尝试使用-U
  • 进行构建
  • 使用dependency:copy 失败
  • dependency:list pom.xml上使用parent-pom同时

_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=

1 个答案:

答案 0 :(得分:2)

我认为答案是here

  

Maven 3.0+强制执行从a解析下载的工件   存储库url / id与当前可用的url匹配   会话。

...

  

IIRC有一个CLI选项可以在Maven 3.1.1中启用   告诉Maven&#34;我知道自己在做什么,不要对此进行检查   时间&#34;即   --legacy本地存储库

确实在--legacy-local-repository调用中添加dependency:get会使生成_remote.repositories,并且可以解析parent-pom

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