我正在尝试将第三方供应商的jar添加到我们的内部nexus存储库。
我尝试使用此命令执行此操作:
mvn deploy:deploy-file
-DgroupId=acme
-DartifactId=acme
-Dversion=1.0
-Dpackaging=jar
-Dfile=C:\tmp\acme-1.0.jar
-DrepositoryId=Nexus
-Durl=http://myserver:8888/nexus/content/repositories/thirdparty/
在我的settings.xml中输入以下内容:
<servers>
<server>
<id>Nexus</id>
<username>myusername</username>
<password>mypassword</password>
</server>
</servers>
但是我收到了这个错误:
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-deploy-plugin:2.7:
deploy-file (default-cli) on project standalone-pom: Failed to deploy artifacts:
Could not find artifact acme:acme:jar:1.0 in Nexus (http://myserver:8888/nexus/c
ontent/repositories/thirdparty) -> [Help 1]
有什么建议吗?
一些相关信息...... 我可以使用以下命令安装到我的本地存储库:
mvn install:install-file
-DgroupId=acme
-DartifactId=acme
-Dversion=1.0
-Dpackaging=jar
-Dfile=C:\tmp\acme-1.0.jar
我还使用GAV参数通过Nexus网络界面尝试了“神器上传”:
Group: acme
Artifact: acme
Version: 1.0
Packaging: jar
选择&amp;添加acme-1.0.jar。 这样就完成了,但项目中的“mvn install”取决于这个jar会导致:
Could not find artifact acme:acme:jar:1.0 in Nexus (http://myserver:8888/nexus/content/groups/public)
我的pom包含:
<repositories>
<repository>
<id>Nexus</id>
<url>http://myserver:8888/nexus/content/groups/public</url>
<releases><enabled>true</enabled></releases>
<snapshots><enabled>true</enabled></snapshots>
</repository>
</repositories>
任何帮助都非常感谢...
PS我知道这个问题与this one非常相似,但问题似乎是使用jenkins网址,而不是nexus网址。
答案 0 :(得分:6)
回答我自己的问题。我解决了这个问题如下:
1)如果您位于代理服务器后面(即您在maven settings.xml中设置了代理服务器),但您的nexus服务器是内部的,则可能需要在settings.xml中将nexus服务器添加为nonProxyHost,例如
<proxies>
<proxy>
...
<nonProxyHosts>myserver</nonProxyHosts>
</proxy>
</proxies>
我意识到我需要这样做,因为我运行的"mvn deploy:deploy-file"
命令似乎根本没有达到nexus repo。
例如,我可以更改settings.xml的服务器部分中的repo id,用户名或密码,但仍然会得到完全相同的错误。我也可以将deploy命令中的url更改为乱码(例如-Durl=notexist
),甚至完全关闭我的nexus repo,STILL也会出现同样的错误。
2)确保您的第三方存储库设置为Release,而不是Snapshot。 要执行此操作,请转到Web GUI,选择第三方存储库的“配置”选项卡,并确保将“存储库策略”设置为“发布”。
我通过查看catalina.out日志(我在Tomcat中运行nexus作为战争)并看到以下内容找到了这一点:
ERROR org.sonatype.nexus.rest.ContentPlexusResource - Got exception during processing request "PUT http://myserver:888/nexus/content/repositories/thirdparty/acme/acme/1.0/acme-1.0.pom": Storing of item thirdparty:/acme/acme/1.0/acme-1.0.pom is forbidden by Maven Repository policy. Because thirdparty is a SNAPSHOT repository
通过这两个修复程序,“mvn deploy:deploy-file”命令以及通过Web GUI中的“Upload Artifacts”选项进行上传工作。
答案 1 :(得分:0)
登录nexus Web控制台并检查公共存储库配置,查看第三方是否在订购组存储库列表中。