背景
在我的上一篇博客 中讲到了通过导入远程仓库的证书来通过验证,就可以下载jar包了。
但是在后期的使用中,从Maven远程仓库下载jar包时,再次遇到不能下载的情况,大概错误为:
Not Authorized
解决
因为在我个人的使用中,访问组织内部的远程仓库是需要个人的认证信息(一对账户和密码),这种机制是组织内部处于安全的考虑。所以对于不同公司组织,账户相关的信息不同,需要自己去判断。
再此之前可以做一个简单的测试,直接通过URL在浏览器中去下载需要的jar包或者相对应的pom文件,看是否有弹框出来,提示输入 账号和密码,此时你就可以去验证到底是使用什么账号或者密码。(一般账号和密码验证通过后就可以下载了)
知道账号和密码后,它们就是server 账号和密码,就可以按照下面文章中的步骤,一步步操作,整个过程还是比较清楚的。
主要是修改settings.xml文件,增加下面的配置:
<settings>
...
<servers>
<server>
<id>deploymentRepo</id>
<username>repouser</username>
<password>repopwd</password>
</server>
</servers>
...
</settings>
在 Apache Maven的官网找到一篇文章,本地尝试后,解决了问题,链接如下:
这篇文章,主要讲到如何加密密码。
步骤
1. 创建一个 master password
在自己的${user.home}/.m2下新建一个空的settings-security.xml文件,然后打开cmd,执行下面的命令:
注意:从maven 3.2.1开始下面的写法,老版本是把password接在命令后
mvn --encrypt-master-password
然后会提示你输入密码,如下(这里的密码叫做master password,可以随便写,用来加密别的密码的)
输完密码后,会产生该密码被加密后的版本,例子如下:
copy上面刚产生的加密后的密码,编辑下面这一段,然后保存到${user.home}/.m2/settings-security.xml中:
<settingsSecurity>
<master>{U2bwB0MpQHoHGxLuevdmCexRe0v7l5mxpbNufNjeZbQ=}</master>
</settingsSecurity>
2. 加密 server password
打开cmd,执行下面的命令,会提示你输入密码,这个密码就是第二部分教你确认下来的server密码:
mvn --encrypt-password
输完server password后,也会产生一个加密后的版本,如下:
把上面的密码,添加到${user.home}/.m2/settings.xml中,例如:
<settings>
...
<servers>
<server>
<id>deploymentRepo</id>
<username>repouser</username>
<password>{odYOriPr05cHKcLy6ssJzougP7JN21cSZqyGfnG8+dU=}</password>
</server>
</servers>
...
</settings>
注意,在上面的password标签中,在{…}外,可以添加任何你想要的信息,相当于加上注释,如下:
<settings>
...
<servers>
<server>
<id>deploymentRepo</id>
<username>repouser</username>
<password>test password, expired on 2021-01-01 {odYOriPr05cHKcLy6ssJzougP7JN21cSZqyGfnG8+dU=}</password>
</server>
</servers>
...
</settings>
做完上面的操作,再执行mvn命令,就可以解决Maven Not Authorized的问题,之前不能下载的jar包,应该能够成功下载下来。
如果这篇文章对你有帮助,请帮忙点个赞吧,谢谢!
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/155842.html