在Maven中为多个存储库设置单个服务器凭据

Eya*_*ran 13 credentials nexus maven

我可以在Maven settings.xml中使用单个服务器凭据拥有多个存储库吗?

我们使用Maven 3.0.4将工件部署到Nexus pro 2.2.1版

我们在同一台服务器上有多个存储库,用户使用相同的凭据访问所有这些存储库.

settings.xml具有相同凭据的多个存储库:

<repositories>
<repository>
   <id>Staging-group</id>
   <url>http://server/nexus/content/groups/Staging-group</url>
<repository>
   <id>RELEASES</id>
   <url>http://server/nexus/content/repositories/RELEASES</url>
</repository>
<repository>
   <id>INTERNALS</id>
   <url>http://server/nexus/content/repositories/INTERNALS</url>
</repository>
<repository>
   <id>SNAPSHOTS</id>
   <url>http://server/nexus/content/repositories/SNAPSHOTS</url>
</repository>
</repositories>
.....
<servers>
<server>
   <id>Staging-group</id>
   <username>user</username>
   <password>password</password>
</server>
<server>
   <id>RELEASES</id>
   <username>user</username>
   <password>password</password>
</server>
<server>
   <id>SNAPSHOTS</id>
   <username>user</username>
   <password>password</password>
</server>
<server>
   <id>INTERNALS</id>
   <username>user</username>
   <password>password</password>
</server>
</servers>
Run Code Online (Sandbox Code Playgroud)

Nexus使用Active Directory身份验证.因此,每次用户更改其Windows密码时,他们都需要更改settings.xml文件中的所有四个条目

有没有办法为所有存储库声明一次凭据?

谢谢,Eyal

Joh*_*ent 7

是的,至少我相信这应该有效.

代替

<repository>
   <id>SNAPSHOTS</id>
   <url>http://server/nexus/content/repositories/SNAPSHOTS</url>
</repository>
Run Code Online (Sandbox Code Playgroud)

使用

<repository>
  <id>nexus</id>
  <name>SNAPSHOTS</name>
  <url>http://server/nexus/content/repositories/SNAPSHOTS</url>
</repository>
Run Code Online (Sandbox Code Playgroud)

然后只需将nexus作为您的服务器ID引用.

  • 这对我来说不适用于mvn 3.5.2,如果我定义多个具有相同id的存储库,只有maven使用最后一个存储库来解决依赖关系,有没有人想出如何解决这个问题? (2认同)