Maven2部署构件到Nexus时出现的错误处理

deploy上传nexus私服报错:Failed to deploy artifacts:Failed to transfer file *** with status code 400 这种问题报错大同小异,有以下几个关键提示: Failed to deploy artifacts 部署文件失败 Failed to transfer file 文件传输失败 with status code 400 400部署异常 如下图: 这里有必要先说说jar包上传nexus私服成功的几个条件: ①检查私服运行状态 查看私服状态命令: nexus.exe /status 结果显示:nexus私服运行中 ②项目pom.xml文件中distributionMana 阅读详情
具体怎样使用deploy命令部署构件到nexus服务器上可以参考经典的 《Maven Definitive Guide》(Maven操作指南),书中的16.7节里面讲解的非常详细。假设我们在项目pom.xml文件中对maven服务器的设置信息如下:

 

<distributionManagement>
      <repository>
          <id>nexus-releases</id>
          <name>Local Nexus Repository</name>
          <url>http://192.168.1.99:8081/content/repositories/releases</url>
      </repository>
      <snapshotRepository>
          <id>nexus-snapshots</id>
          <name>Local Nexus Repository</name>
          <url>http://192.168.1.99:8081/content/repositories/snapshots</url>
      </snapshotRepository>
  </distributionManagement>


这里我要说的是在使用的过程中遇到的几个都是“Failed to transfer file”错误,错误信息如下格式:

Error deploying artifact: Failed to transfer file:… Return code is:4xx

也就是说前面错误的信息都是一样的,只是后面返回的HTTP状态数字不同。

1. Return code is: 405
这个问题害我查了两个多小时才发现错误的根源,简单的错误就是在Maven执行到上传文件到服务器的时候出现一个HTTP 405错误。开始的时候总以为是Maven本身的问题,所以在这个上面浪费了不少时间。后来仔细查了405错误的含义是“用来访问本页面的 HTTP 方法不被允许”,最后终于发现是因为前面repository的地址写错了,或者是端口写错,或者是地址中的某个单词拼错了,反正原因就是repository的地址写错了。

2. Return code is: 401或者Return code is: 403
其实403错误就是“禁止访问”的含义,所以问题的根源肯定在授权上面。Maven在默认情况下会使用deployment帐号(默认密码deploy)登录的系统,但是关键的Nexus中Releases仓库默认的Deployment Policy是“Disable Redeploy”,所以无法部署的问题在这个地方,方法是将其修改为“Allow Redeploy”就可以了。

到这里还没有结束,因为如果直接按照上面的设置的话会有一个安全问题,那就是这样所有的开发人员都可以将构件部署到Nexus的releases仓库中了,时间长了会导致这个仓库中非常乱,这也应该是nexus为什么默认情况下将Release仓库的发布权限关闭的原因了。解决这个问题的整体思路就是在部署构件的时候需要使用用户名和密码登录,操作如下:
(1) 首先将Releases仓库默认的Deployment Policy修改为“Allow Redeploy”;
(2) 然后在右边的Security下面的Users中,修改deployment帐号的密码,方法是在帐号上右键,然后选择“Set Password”(PS:这个操作我找了好久,后来无意中右键才找到,呵呵~~);

(3) 这个时候如果直接执行 mvn deploy 命令的话就又会出现401错误,还有一步就是将密码设置到Maven settings.xml中。打开settings.xml文件(${user.home}/.m/settings.xml或%{m2_home}/conf/settings.xml),找到<servers>,然后修改信息如下:

<server>
      <id>nexus-releases</id>
      <username>deployment</username>
      <password>deploydv89</password>
    </server>
 
    <server>
      <id>nexus-snapshots</id>
      <username>deployment</username>
      <password>deploydv89</password>
</server>


这里需要特别说明一句的是里面的id必须和你在项目pom.xml文件中distributionManagement下面设置的仓库id一致!当然了,这个里面你也可以设置admin帐号,或者参照deployment的权限手动添加新的帐号等等都是可以的。

当然,问题到这里已经得到了比较完美的解放,但是如果有人还要较真的话会想到帐号的密码直接放到配置文件里面不是很安全。其实只要这里不建议放admin帐号,而deployment是无法登录的。如果非要更安全一些的话,也可以使用Maven 2.1.0之后所提供的密码加密功能,操作的步骤如下:
(1) 使用“mvn –encrypt-master-password xxx”或“mvn –emp xxx”创建一个主密钥,后面的xxx就是你所要设置的密钥的内容,这个密钥主要用于后面加密密码来用的;命令执行之后会产生一个类似{jSMOWnoPFgsHVpMvz5VrIt5kRbzGpI8u+9EF1iFQyJQ=}形式的字符串。
(2) 在${user.home}/.m/目录下创建一个名为settings-security.xml文件,我们将刚刚产生的主密钥放到这个文件中,文件的内容如下:

<?xml version="1.0" encoding="UTF-8"?>
<settingsSecurity>
    <master>{jSMOWnoPFgsHVpMvz5VrIt5kRbzGpI8u+9EF1iFQyJQ=}</master>
</settingsSecurity>

注意,这个settings-security.xml文件一定要放在${user.home}/.m/目录下面,而不能放在${m2_home}/conf目录下!
(3) 使用“mvn –encrypt-password xxx”或“mvn –ep xxx”命令对帐号的密码进行加密,后面的xxx就是帐号的密码,加密之后依然会产生一个“{xxx}”形式的字符串,将这个字符串替换上面settings.xml文件中的server下面的password节点内容即可。
还有一种更安全的方式,就是将主密钥放到U盘里面,具体的操作可以看下面的参考资料。

3. Return code is: 400
400错误的含义是“错误的请求”,在这里的原因是往往是没有部署到nexus的仓库中。nexus的repository分三种类型:Hosted、Proxy和Virtual,另外还有一个repository group(仓库组)用于对多个仓库进行组合。部署的时候只能部署到Hosted类型的仓库中,如果是其他类型就会出现这个400错误。

还有一种情况也会出现400错误,就是默认情况下部署构件到Releases仓库中有时也会出现400错误,这个原因就像上面提到的那样,Nexus中Releases仓库默认的Deployment Policy是“Disable Redeploy”,所以无论你在settings.xml文件中将server的username设置为deployment还是使用admin都是无法部署的,就会出现这个400错误。这个问题也困扰了我好长时间,而且我还看到网上有人说admin没有部署构件的权限,这个是不对的。修改的方法可以参考上面第2条的做法。

参考资料:
maven 中 部署构件至Nexus(mvn deploy)
Maven2中需要注意的问题
maven deploy到nexus私服出错问题
Maven Tips and Tricks: Encrypting Passwords
Maven – Password Encryption

Maven发布代码,401错误问题解决,with status code 401 maven上传到中央仓库, SNAPSHOT库报以上401错误,是什么原因? 3.若是在2024年6月前还正常上传, 在6月突然不行了. 很大原因是原来使用用户名,密码,现要在使用token了. 注意, 使用旧的方式发布过代码的, 同样的maven坐标是不支持在新的方式重新登记namespace命名空间的. 即不能在旧的和新的都发布有同样坐标的代码.所以之前发布过的,报401,就不要折腾新方式了. 阅读详情

相关推荐

maven deploy上传jar包到nexus错误排查

最近在项目中使用maven-deploy上传jar包时出现原因是服务器满了,具体可以在nexus的后台中查看nexus的日志,如下知道是nexus所在的服务器磁盘满了,就可以清理一下磁盘,腾出空间即可。

Seven Coding 1027

Maven2部署构件到Nexus时出现的Failed to transfer file错误

原文出处: http://www.javatang.com/archives/2010/01/23/4518375.html作者: Jet Mah from Java堂声明: 可以非商业性任意转载, 转载时请务必以超链接形式标明文章原始出处、作者信息及此声明!   具体怎样使用deploy命令部署构件到nexus服务器上可以参考经典的《Maven Definitive Guide》(...

Java Tang 1256

pycharm Failed to transfer file 红色提示 上传文件失败

pycharm远程开发修改服务器文件上传(upload)时报错 报错: [2019/9/29 9:49] Upload to xxx@xx.xxx.xxx.xx:22 [2019/9/29 9:49] Upload file 'D:\projects\folder1\utee\misc.py' to '/home/xxx/folder1/utee/misc.py' [2019/9/29 9:4...

Hello Word! 1万+

解决tomcat在pycharm中的初始化报错“ Failed to transfer file”“could not create folder”“(Permission denied)”

一、系统环境 客户端:Win10 1903;IDEAUltimate 2020.1.3; 服务器:Ubuntu20;JDK1.8;Tomcat9.0.43 二、报错现象 运行Tomcat后,提示运行失败,如图所示 提示没有权限写入文件: Failed to transfer file 'D:\boyLen\Java\Spring4_remote\out\artifacts\Spring4_remote_war_exploded\index.jsp': could not create fo.

weixin_44607626的博客 2981

Eclipse插件简化Nexus 3.x版本的JAR包上传流程

Nexus 3.x是继Nexus 2.x之后的下一代Maven仓库管理器,它提供了一种简单的方式去存储和分发代码构建中使用到的各种构件,例如:Maven的pom文件、jar文件等。作为软件构建成果的存储库,Nexus能够显著提高构建的效率并减少构建时间,特别是对于大型项目。在软件开发的过程中,开发人员常常需要将本地开发的库或模块打包成JAR文件并上传到远程仓库以供其他项目或团队成员使用。这一过程往往涉及到多个步骤,包括编译打包、配置仓库信息、上传等。

weixin_31569663的博客 421

个人信息保护合规审计人员(高级)能力考核试卷+面试模拟

《个人信息保护合规审计考试与面试指南》 摘要:本文提供个人信息保护合规审计考试及面试的全面指导。考试采用闭卷笔试形式,满分100分,合格线75分,时长120分钟,包含单选、多选、判断题及综合案例分析题。内容涵盖《个人信息保护法》核心条款、审计程序、风险评估等实务要点。面试环节采用情景模拟方式,重点考察应试者在压力下处理审计独立性、客户关系与监管要求的平衡能力,以及应对数据泄露等突发事件的处置流程。案例题聚焦大型互联网平台的数据收集、共享、跨境传输等高风险环节的合规审计,要求设计完整的审计方案框架。面试评分标

qq_41525079的博客 1146

M2工程 mvn deploy 401 403错误处理

2010年01月31日 m2eclipse插件使用中提示jar包找不到的解决方法 类归于: JavaPlateform — Jet @ 4:33 下午 Tags: m2eclipse, maven 原文出处: http://www.javatang.com/archives/2010/01/31/3312389.html作者: Jet Mah from Java堂声明: 可以...

huyanfei2351的专栏 1303

px3 有感分析

px3 后续分析

qq_39707917的博客 3117

Linux下使用nexus搭建maven私服

有了私服之后,当 Maven 需要下载构件时,直接请求私服,私服上存在则下载到本地仓库;否则,私服请求外部的远程仓库,将构件下载到私服,再提供给本地仓库下载。nexus脚本中提供了运行时候的参数,run,start,stop等,run是当前shell运行,停止直接可以crtl + C,start是后台运行。有个maven私服可以很方便地管理我们的jar包和发布构建到远程仓库,本文就介绍了如何在linux下一步步使用nexus搭建maven私服。nexus启动成功之后,我们就可以访问咱们的私服了。

满脑子灵感的专栏 936

Qlib数据获取避坑指南:从CSV导入到自定义数据源的完整解决方案

本文详细解析了Qlib数据获取的完整解决方案,从CSV导入到自定义数据源,涵盖了股票数据处理的关键技巧和常见陷阱。特别针对Qlib平台的数据格式要求和复权处理提供了实用指南,帮助量化投资者高效整合Wind等第三方数据源,确保数据质量与模型性能。

weixin_29047919的博客 305

Solidworks钣金设计:折弯系数、K因子与折弯扣除的实战应用解析

本文深入解析Solidworks钣金设计中折弯系数、K因子与折弯扣除的核心概念与实战应用。通过厘清三者间的逻辑关系与换算方法,并结合材料特性、工艺参数及车间实测,指导工程师精准确定展开长度,确保设计图纸与加工实物的一致性,有效提升钣金件设计精度与生产效率。

weixin_29268267的博客 926

将本地构件部署至nexus

本文介绍如何将本地项目打包发布到nexus服务器上,以及如何将第三方jar包发布到nexus服务器上。个人珍藏资料!!!

jaune162的专栏,最新动态请关注:https://jaune162.blog 2480

vesta软件_分子动力学计算实战:利用 OVITO 软件找弗伦克尔缺陷和位错环分析

今天继续和大家分享这篇纯分子动力学(MD)的 Nat. Comm. 文章(DOI:10.1038/s41467-018-07102-3)。上期推文(从一篇 Nat. Comm. 学习经典分子动力学基本知识和相关软件基本操作 (一)),我们借用该文章的 fig.1 简单介绍了如何用文中所提到的 LAMMPS 软件来实现材料中级联碰撞过程。但是,想完整的展示类似该文章的 fig.1,单纯利用...

weixin_39524842的博客 5983

docker部署nexus及配置docker、maven、npm仓库

1、安装docker省略 2、安装JDK省略 3、下载nexus镜像 docker pull sonatype/nexus3 4、创建映射目录 /root/docker/nexus/data 5、运行容器 docker run -d -p 8081:8081 -p 5000:5000 --name nexus -v /root/docker/nexus/data/:/nexus-data sonatype/nexus3 6、报这个错误时候java.io.FileNotFoundException: …

liuchao666888的博客 1459

公文流转系统

公文录入区 | QLineEdit(文号/标题)、QComboBox(公文类型/紧急程度)、QTextEdit(正文)、QListWidget(附件列表)、QPushButton(上传附件/保存草稿/提交审批) |// 按时间范围获取。QStringList userNames = {"张三", "李四", "王五", "赵六", "钱七", "孙八", "周九", "吴十", "郑十一", "王十二"};

寒寒豆豆软件公司的博客 551

cesium单向流动线效果

在学材质的路上一去不复返了属实是,难也难在这。还请各位大佬多多指教~

就zhei? 690

企业级微服务构建-01搭建和使用Maven私有仓库(Nexus)-30Maven中配置和使用Nexus

Nexus-30查看标签

mediocrep的博客 382

【100%通过率】华为od机试C卷【出差 / 员工派遣】Java&Go 实现

某公司部门需要派遣员工去国外做项目。现在,代号为 x 的国家和代号为 y 的国家分别需要 cntx 名和 cnty 名员工部门每个员工有一个员工号 (1,2,3,......),工号连续,从 1开始。部长派遣员工的规则:

MISAYAONE的博客 2642

Maven之私服Nexus的安装和配置

1. Nexus的安装 http://blog.sina.com.cn/s/blog_3f12afd00101f88z.html 2.用Nexus搭建maven私服 http://www.blogjava.net/xiaomage234/archive/2012/11/22/391770.html 3.Maven2部署构件到Nexus时出现的Failed to tr

八荒六合唯我独尊 704

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

别再手动传包了!用Jenkins Pipeline + Nexus 3.x 实现Java项目构件自动发布(附完整脚本)

本文详细介绍了如何利用Jenkins Pipeline与Nexus 3.x实现Java项目构件的自动化发布,包括环境配置、核心脚本解析和高级部署模式。通过实战案例展示,该方案能显著提升发布效率300%,降低错误率至零,适用于现代DevOps环境。

weixin_33722405的博客 189

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

Maven及Nexus私服搭建

maven大家都了解了是个什么玩意儿,直接上部署过程了。 新建个目录mkdir /data/maven, 进入该目录并执行如下操作步骤: maven官网下载包: #wget http://mirror.bit.edu.cn/apache/maven/maven-3/3.1.1/binaries/apache-maven-3.1.1-bin.tar.gz

校嘻嘻 978

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

Nexus Repository Import Scripts 使用教程

Nexus Repository Import Scripts 使用教程 项目介绍 Nexus Repository Import Scripts 是一个开源项目,旨在帮助用户更方便地将各种格式的文件导入到 Nexus Repository Manager 中。该项目由 Sonatype 社区维护,提供了多种脚本和工具,支持从本地文件系统、远程 URL 等多种来源导入数据。 项目快速启动 环境准备...

gitblog_00264的博客 541

eclipse android使用Maven deploy构建到Nexus上

过程如下: 1  安装Maven 、 eclipse 、 Nexus 2  Maven配入Nexus仓库地址 1)修改Maven settting.xml文件        (常见默认路径:C:\Users\Administrator\.m2) [html] view plain copy   xml version="1.0

xiangjai的专栏 1810

maven+nexus+Linux配置Maven私服

准备工作 安装 下载maven:https://maven.apache.org/download.cgi 下载Nexus:https://www.sonatype.com/download-oss-sonatype 建议选择版本 tar zxvf nexXXXX命令解压到linxu环境会出现nexus-2.12.0-01和sonatype-work两个文件,nexus-2.12.0-

a553250827的专栏 544

上传第三方jar包到maven远程仓库nexus

上传第三方jar包到maven远程仓库nexus的参考: 一、cmd下命令行进入maven工具bin目录(eclipse自带的也行,我是直接copy eclipse maven插件文件到D盘的),如:D:\apache-maven-3.2.1\bin> 二、输入命令查看maven工具是否可用:mvn -version 1). 安装到本地库: mvn install:inst

lizhikang2009的博客 1575

使用Nexus创建Maven私有仓库

从Maven中央仓库下载所需的jar包,需要外网的支持如果公司不能上外网的话则不能从中央仓库下载所需jar包,公司网速慢的时候也会影响项目构建的速度。用户可以用nexus创建私有的maven仓库。 首先下载nexus,下载地址是http://www.sonatype.org/nexus/go,在此页面可以下载最新版本的Nexus,可以下载zip包也可以下载war包两种包的部署方式不一样。 一、...

dawuafang 250
上一篇: spring中使用mule的配置经验总结
下一篇: 对 HTTP 304 的理解(转)
我爱看书
博客等级 码龄18年 0粉丝 5原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值