首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >mvn部署:部署-文件-未能部署工件:找不到工件

mvn部署:部署-文件-未能部署工件:找不到工件
EN

Stack Overflow用户
提问于 2013-04-25 15:38:05
回答 2查看 54.2K关注 0票数 9

我试图添加一个第三方供应商的jar到我们的内部连接存储库。

我试图使用以下命令来完成此操作:

代码语言:javascript
复制
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中有以下条目:

代码语言:javascript
复制
  <servers>
        <server>
            <id>Nexus</id>
            <username>myusername</username>
            <password>mypassword</password>
        </server>
  </servers>

但我知道这个错误:

代码语言:javascript
复制
[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]

有什么建议吗?

一些相关的信息..。我可以使用以下命令安装到本地存储库:

代码语言:javascript
复制
mvn install:install-file 
-DgroupId=acme 
-DartifactId=acme 
-Dversion=1.0 
-Dpackaging=jar 
-Dfile=C:\tmp\acme-1.0.jar

我也尝试过通过Nexus网络界面上传“人造物品”,使用GAV参数:

代码语言:javascript
复制
Group: acme
Artifact: acme
Version: 1.0
Packaging: jar

并选择并添加acme-1.0.jar。这完成得很好,但是项目上的"mvn安装“取决于这个jar,结果是:

代码语言:javascript
复制
Could not find artifact acme:acme:jar:1.0 in Nexus (http://myserver:8888/nexus/content/groups/public)

我的pom包含:

代码语言:javascript
复制
<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 url,而不是nexus url。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-04-29 18:47:16

回答我自己的问题。我解决了以下问题:

1)如果您在代理服务器后面(即您在maven settings.xml中设置了代理服务器),但是您的附件服务器是内部的,那么您可能需要在settings.xml中将nexus服务器添加为nonProxyHost。

代码语言:javascript
复制
<proxies>
  <proxy>
    ...
    <nonProxyHosts>myserver</nonProxyHosts>
  </proxy>
</proxies>

我意识到我需要这样做,因为我运行的"mvn deploy:deploy-file"命令似乎根本没有到达nexus。例如,我可以在settings.xml的服务器部分更改repo、用户名或密码,但仍然会得到完全相同的错误。我还可以将部署命令中的url更改为胡言乱语(例如,改为-Durl=notexist),甚至完全关闭nexus,但仍然会得到相同的错误。

2)确保将第三方存储库设置为发行版,而不是快照。为此,转到web,选择第三方存储库的Configuration选项卡,并确保repository被设置为发行版。

我通过查看catalina.out日志(我在Tomcat中将nexus作为一个war运行)发现了这一点,并看到了以下内容:

代码语言:javascript
复制
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部署:部署-文件“命令,以及上传通过‘上传工件’选项在web工作。

票数 6
EN

Stack Overflow用户

发布于 2013-04-26 05:44:21

登录到nexus控制台并检查公共存储库配置,并查看第三方是否在列表中。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16219052

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档