我在公司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存储库手动删除内部文件并不是一个好主意。怎么能避免呢? 我也不知道为什么会这样,一些解释将不胜感激。
其他方法:
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=
答案 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代码来解释。