我有2个Maven项目,这些项目每天都在Jenkins构建的Nexus快照存储库中部署。 对于一个项目,一切正常。 对于第二个,每次Jenkisn运行mvn deploy时都会出现以下错误:
[INFO] --- maven-deploy-plugin:2.8.2:deploy (default-deploy) @ my-second-project ---
[INFO] Downloading: http://my.nexus/content/repositories/snapshots/fr/domain/my-second-project/0.18.0-SNAPSHOT/maven-metadata.xml
[WARNING] Could not transfer metadata fr.domain:my-second-project:0.18.0-SNAPSHOT/maven-metadata.xml from/to my.nexus (http://my.nexus/content/repositories/snapshots): Access denied to: http://my.nexus/content/repositories/snapshots/fr/domain/my-second-project/0.18.0-SNAPSHOT/maven-metadata.xml , ReasonPhrase:Forbidden.
这2个项目的版本完全相同。
我尝试在两个Jenkins版本上运行mvn help:effective-settings
,而不是mvn deploy
:它为两个项目返回完全相同的设置。但是一个部署在Nexus上,而另一个则没有......
修改 :mvn help:effective-pom
也没有显示任何有用的差异。除了项目名称和一些依赖项,它们是相同的。
在第二个项目的情况下,它从未部署在nexus上。所以元数据还不存在。但我试图拖尾nexus request.log文件,当Jenkins在第二个项目上运行mvn deploy
时,它永远不会被击中。我没有那个电话的痕迹。
有没有人有想法?
修改: 我终于发现公司代理正在抛出“禁止”错误。这很奇怪,因为在settings.xml Maven配置文件中,我有以下内容:
<proxy>
<id>****</id>
<active>true</true>
<protocol>http</protocol>
<host>**********</host>
<port>8080</port>
<nonProxyHosts>my.nexus|127.0.0.1|...</nonProxyHosts>
</proxy>
失败的作业是忽略“nonProxyHosts”部分:调用配置中定义的代理并抛出错误。正常构建的作业不会调用代理(正常行为)。
我仍在寻找有关此行为原因的想法......
答案 0 :(得分:1)
解决此问题的最简单方法是删除maven附加了.lastUpdated前缀的依赖项或工件。只有在那之后,您才能成功更新maven项目的依赖项。
对于Unix用户:
查找〜/ .m2-名称“ * .lastUpdated” -exec grep -q“无法传输” {} \; -print -exec rm {} \;
右键单击您的项目,然后选择“更新依赖项”
对于Windows用户:
<user-directory>\.m2\repository
for /r %i in (*.lastUpdated) do del %i
Update Dependencies
答案 1 :(得分:0)
这是凭据问题。
找出maven正在使用哪个settings.xml。 mvn -v
然后在该文件中使用正确的凭据更新该部分
<server>
<id>deploymentRepo</id>
<username>deployment</username>
<password>deployment</password>
</server>
现在尝试:)