启用 Maven 加密的 Nexus 访问被拒绝
Posted
技术标签:
【中文标题】启用 Maven 加密的 Nexus 访问被拒绝【英文标题】:Nexus access denied with maven encryption enabled 【发布时间】:2014-07-17 20:55:09 【问题描述】:我刚刚在我的项目中添加了 maven 加密,所以我的 settings.xml 文件中的所有密码都是加密的。当我尝试通过执行以下操作来联系我的 nexus 服务器时
mvn clean install -DskipTests
然后所有依赖项都被正确下载并且构建成功。但是,当我也通过执行
来运行测试时mvn clean install
然后,当测试阶段开始并且 maven 尝试联系 nexus 以获取测试相关依赖项时,似乎对 nexus 的访问被拒绝,好像 surefire:test 插件目标忽略了 maven 加密并尝试连接到 nexus密码错误。
一个示例异常是:
-------------------------------------------------------
T E S T S
-------------------------------------------------------
Running com.activity.dashboard.DashboardActivityTest
Downloading: org/robolectric/android-all/4.3_r2-robolectric-0/android-all-4.3_r2-robolectr
ic-0.pom from repository nexus at http://xxx.xxx.xxx.xxx:7222/nexus/content/groups/public
Access denied to: http://xxx.xxx.xxx.xxx:7222/nexus/content/groups/public/org/robolectric/a
ndroid-all/4.3_r2-robolectric-0/android-all-4.3_r2-robolectric-0.pom
[WARNING] Unable to get resource 'org.robolectric:android-all:pom:4.3_r2-robolectric-0' fr
om repository nexus (http://xxx.xxx.xxx.xxx:7222/nexus/content/groups/public): Authorizatio
n failed: Access denied to: http://xxx.xxx.xxx.xxx:7222/nexus/content/groups/public/org/rob
olectric/android-all/4.3_r2-robolectric-0/android-all-4.3_r2-robolectric-0.pom
编辑:
settings.xml 如下所示:
<settings>
<servers>
<server>
<id>nexus</id>
<username>maven</username>
<password>encryptedpassword</password>
</server>
</servers>
<mirrors>
<mirror>
<id>nexus</id>
<mirrorOf>*</mirrorOf>
<url>http://xxx.xxx.xxx.xxx:7222/nexus/content/groups/public</url>
</mirror>
</mirrors>
<profiles>
<profile>
<id>nexus</id>
<repositories>
<!--Overriding the central repo to allow snapshots.-->
<repository>
<id>central</id>
<!--Url will eventually get overridden by the mirror url.-->
<url>fake url</url>
<snapshots>
<enabled>true</enabled>
</snapshots>
</repository>
</repositories>
</profile>
</profiles>
<activeProfiles>
<activeProfile>nexus</activeProfile>
</activeProfiles>
</settings>
另外,我的父 pom.xml 包含可能相关的分发管理部分:
<distributionManagement>
<snapshotRepository>
<uniqueVersion>true</uniqueVersion>
<id>nexus</id>
<name>Nexus Follower Snapshot Repository</name>
<url>http://xxx.xxx.xxx.xxx:7222/nexus/content/repositories/snapshots/</url>
<layout>default</layout>
</snapshotRepository>
</distributionManagement>
上传和下载快照工作正常。
【问题讨论】:
我们在工作中使用相同的设置,我们没有这样的问题。您确定您已正确诊断问题吗?我们可以查看您的设置文件吗(当然,经过适当编辑)? 不太确定。问题是,只要我将 settings.xml 上的密码更改为未加密的密码,那么一切正常。 【参考方案1】:有趣的是,今天再次尝试加密后,它毫无例外地正常工作。不确定是什么原因造成的,可能是 Intellij 中缓存的东西,甚至是 maven/nexus 版本。
【讨论】:
以上是关于启用 Maven 加密的 Nexus 访问被拒绝的主要内容,如果未能解决你的问题,请参考以下文章
在 Spring Security 中启用 CSRF 时,访问被拒绝 403