项目发布到私服出错(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
第二次报错
##自查:
按照网上的来看,这里是找不到要将这个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