Maven下载最新2.1-SNAPSHOT时遇权限认证错误求助
先看你碰到的具体错误:
[WARNING] 无法从/向maven.oracle.com(https://maven.oracle.com)传输元数据org.javalite:javalite-common:2.1-SNAPSHOT/maven-metadata.xml:未授权,ReasonPhrase:Authorization Required。[WARNING] 从https://maven.oracle.com传输org.javalite:javalite-common:2.1-SNAPSHOT/maven-metadata.xml失败已被缓存到本地仓库,resol...
这个问题核心有两点:一是maven.oracle.com现在必须用合法的Oracle账号认证才能访问,二是更关键的——javalite的包根本不在Oracle的Maven仓库里,你的Maven配置大概率错误地把这个仓库加到了快照仓库列表里,导致请求发错了地方。
下面是一步步的解决办法:
1. 移除配置里多余的maven.oracle.com快照仓库
打开你的Maven配置文件settings.xml(通常在~/.m2/settings.xml或者Maven安装目录下的conf/settings.xml),找到<snapshotRepositories>区块,把指向https://maven.oracle.com的仓库条目删掉。
比如如果有类似这样的配置:
<snapshotRepository> <id>maven.oracle.com</id> <url>https://maven.oracle.com</url> </snapshotRepository>
直接删除这段内容就行。
2. 配置javalite官方的快照仓库
javalite的快照包要从他们官方指定的仓库拉取,你可以在项目的pom.xml或者全局settings.xml里添加这个仓库:
<repositories> <repository> <id>javalite-snapshots</id> <url>https://oss.sonatype.org/content/repositories/snapshots</url> <snapshots> <enabled>true</enabled> </snapshots> </repository> </repositories>
3. 清理本地缓存的错误元数据
因为错误的元数据已经被存到本地仓库了,得手动删掉对应的目录:
rm -rf ~/.m2/repository/org/javalite/javalite-common/2.1-SNAPSHOT
之后重新执行你的Maven命令(比如mvn clean install),就能从正确的仓库拉取快照包了。
补充:如果确实需要访问Oracle仓库的情况
要是你有其他依赖必须从maven.oracle.com获取,那得在settings.xml里配置Oracle账号的凭证:
<servers> <server> <id>maven.oracle.com</id> <username>你的Oracle账号邮箱</username> <password>你的Oracle账号密码</password> </server> </servers>
注意:这个Oracle账号得是有效的,而且你需要同意Oracle的相关服务条款才能访问他们的Maven仓库。
内容的提问来源于stack exchange,提问作者valley

