Maven Sonatype Nexus return 401

说明

之前deploy代码到sonatype一直不成功,且提示401。一直没发现原因,直到看到下面的博文,最终解决了问题,故转载分享出来。
原文链接:https://www.trinea.cn/dev-tools/maven-sonatype-nexus-return-401-which-settings-xml-maven-is-using/

注意:sonatype网站密码中特殊字符不要使用&,因为它在和xml元素标签解析的时候会出问题。
原文如下:

主要解决Sonatype Nexus return ’401′问题及查看maven当前生效的是哪个settings.xml
使用Sonatype把自己android-common的和android-auto-scroll-view-pager等库发布到Maven中央仓库
mvn clean deploy却发现始终401,提示

[ERROR] Failed to execute goal org.apache.maven.plugins:maven-deploy-plugin:2.7:deploy (default-deploy)
on project trinea-android-common: Failed to deploy artifacts: Could not transfer artifact 
cn.trinea.android.common:trinea-android-common:pom:4.2.10-20140510.125625-1 from/to 
sonatype-nexus-snapshots (https://oss.sonatype.org/content/repositories/snapshots/): 
Failed to transfer file: https://oss.sonatype.org/content/repositories/snapshots/
cn/trinea/android/common/trinea-android-common/4.2.10-SNAPSHOT/trinea-android-common-4.2.10-20140510.125625-1.pom.
Return code is: 401, ReasonPhrase: Unauthorized. -> [Help 1]

检查了下
(1) 已添加C:\Users\your-user-name.m2\settings.xml,并且内容包含

<settings>
  ...
  <servers>
    <server>
      <id>sonatype-nexus-snapshots</id>
      <username>your-jira-id</username>
      <password>your-jira-pwd</password>
    </server>
    <server>
      <id>sonatype-nexus-staging</id>
      <username>your-jira-id</username>
      <password>your-jira-pwd</password>
    </server>
  </servers>
  ...
</settings>

(2) 上面的your-jira-id和your-jira-pwd已经替换为自己在https://oss.sonatype.org/上的用户名和密码。
用mvn help:effective-settings查看了下当前生效的settings文件内容,发现并没有上面(1)中添加的内容,怀疑settings文件是否生效了,用mvn -X命令查看如下

Java version: 1.7.0_02, vendor: Oracle Corporation
Java home: D:\Program Files\Java\jdk1.7.0_02\jre
Default locale: zh_CN, platform encoding: GBK
OS name: "windows 7", version: "6.1", arch: "x86", family: "windows"
[INFO] Error stacktraces are turned on.
[DEBUG] Reading global settings from D:\Program Files\apache-maven-3.2.1\conf\settings.xml
[DEBUG] Reading user settings from C:\Users\Administrator\.m2\settings.xml

先读的是maven安装目下conf里面的settings.xml,那为什么没生效呢?
直接修改D:\Program Files\apache-maven-3.2.1\conf\settings.xml mvn clean deploy可正常发布
D:\Program Files\apache-maven-3.2.1\conf\settings.xml拷贝到C:\Users\Administrator.m2\下居然不会提示和已有的settings.xml文件重名冲突,复制两个文件名发现之前新建的文件名为?settings.xml,次奥,网页上复制过来多了个非法字符,并且一般不可见。这样删除?settings.xml这个文件保留settings.xml文件加上配置即可。
PS:
maven-help-plugin是一个小巧的辅助工具,最简单的help:system可以打印所有可用的环境变量和Java系统属性。help:effective-pom和help:effective-settings最为有用。
help:effective-pom用于查看当前生效的POM内容,指合并了所有父POM(包括Super POM)后的XML,所以可用于检测POM中某个配置是否生效
effective-settings可用于查看当前生效的settings.xml文件内容,所以可用于判断某个settings配置是否生效

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值