maven项目打包发布nexus私服出错(401)

项目发布到私服出错(401)

前言

这是一个简单的错误,但是耽误了我不少时间。本来是记在了自己的异常笔记中,解决完后觉得还挺有意思,而且错误界面恢复起来(就是重现当时的错误)挺简单的,于是决定补发到这里。相信能够给一些新手省下一点时间~

背景交代

我(在IDEA上)创建了一个父工程maven_parent,其下按照分层开发,有一个maven_pojo的子工程,我现在想要将该工程打包发布到私服(nexus3)上。
工程关系

第一次出错

idea控制台报错:
	Failed to execute goal org.apache.maven.plugins:maven-surefire-plugin:2.12.4:test (default-test) on project mgr_spring_aop: There are test failures.	
	Please refer to E:\IDEA\Spring\mgr_spring_aop\target\surefire-reports for the individual test results.

##原因:

仔细检查发现mgr_spring_aop并不是我想要的(我要发布的是maven_pojo),所以是项目搞错了,原来在选择发布时我没有勾选右上角在里面选择工程。
(也可以直接点击该工程的生命周期,甚至还可以在Terminal中使用cd命令切换到该工程,然后执行mvn)

##解决方案:更正后按照正确步骤重新发布一次。

##结果:又爆出了新错误 401

第二次报错

401

##自查:

	按照网上的来看,这里是找不到要将这个jar包放在哪个仓库,应该是配置问题。为了验证我还试了一下,单独测试打包命令确实可以,但是发布到私服就出错了。
可是配置都是齐全的啊,我在maven的setting中配置好了账号密码,在子模块maven_pojo的pom中配置好了<distributionManagement>,应该没有问题。

在这里插入图片描述
在这里插入图片描述

##突破
于是在网上查找教学视频,我发现了两个不同的地方。
1.我的是在子模块中设置的,网上的另外一个教学视频是在父模块中设置(这里有个区别,其中一个视频是nexus2,而后一个3,而我就是用的3)。
2.这也是最关键的地方,我的电脑自己安装的是maven3.5.2,而我突然发现我的IDEA集成的maven却是3.0 !!!!

哪来的3.0 ?!!!对着配置目录一查,原来是我的IDEA里继承了一个maven3.0
如果说我用的maven是3.0,而我把账号密码配置在3.5的setting里,这难怪会报错401

解决方案

	1.将maven_pojo的<distributionManagement>移到父工程maven_parent。
	2.可以去修改maven3.0的setting,也可以将IDEA继承的maven改为本地的3.5.2。

我选择后者。
在这里插入图片描述

结果

完美解决!!
在这里插入图片描述
在这里插入图片描述

反思

按照这个过程,第二点出错肯定是最关键的。但是第一点有影响吗?
应该是没有影响的,因为父子之间存在依赖继承,既然将写在父工程都可以,写在子工程应该更是没问题。

验证

删除私服的jar包,将<distributionManagement>重新移到子工程,重新发布。

结果

不错所料,依旧能够成功!

在这里插入图片描述

最后

其实这里只要IDEA配置的maven能勾找到配好了账号密码的setting。xml就行了,至于说maven3.0配maven3.5的setting(两者不在同一条路径下),还是反过来,都是无所谓的,都可以成功。(亲测可用,就不上交错配置在这里插入图片描述
图了!)

结语

觉得有所帮助的话,可以点赞一下,更希望能够评论留言交流补充~(代码菜鸟,有所纰漏请多指正!)

没啥好帖子参考的,倒是这个视频帮了我不少忙~
[1]: https://www.bilibili.com/video/BV1xQ4y1N7kC?from=search&seid=5717221939029786637


版权声明:本文为weixin_47443266原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。