Hi, Looking at the code, there is really a one-to-one implicit mapping between the repository id and the server id used to look-up authentication information.
Maven adds to a DefaultAuthenticationSelector the server id [1] as key of a map Id -> authentication info [2]. Then, a possible authentication info is retrieved for a repository by asking it to the AuthenticationSelector for a given repo [3], and this method internally fetches it from the repository id [4]. I didn't test with all Maven versions but with Maven 3, I'd expect an error. I tracked this commit [5] where you can see that the warning was changed to an error for Maven 3.0-alpha5. Perhaps it would be possible to add an element "serverId" inside "repository"? Without it, default to the repository id as before and, with it, use it as the key to search for the authentication info. I don't know about a possible road-map for this feature (or for MNG-5585). [1]: https://github.com/apache/maven/blob/maven-3.3.9/maven-core/src/main/java/org/apache/maven/internal/aether/DefaultRepositorySystemSessionFactory.java#L200 [2]: https://github.com/eclipse/aether-core/blob/aether-1.0.2.v20150114/aether-util/src/main/java/org/eclipse/aether/util/repository/DefaultAuthenticationSelector.java#L40 [3]: https://github.com/apache/maven/blob/maven-3.3.9/maven-core/src/main/java/org/apache/maven/bridge/MavenRepositorySystem.java#L246 [4]: https://github.com/eclipse/aether-core/blob/aether-1.0.2.v20150114/aether-util/src/main/java/org/eclipse/aether/util/repository/DefaultAuthenticationSelector.java#L52 [5]: https://github.com/apache/maven/commit/1068ab557c476a291f3f16bc2b2523d5613c5e17#diff-62baa3a3145d2df18244b7d719fc9686L42 Regard, Guillaume > Message du 19/07/16 23:57 > De : "Justin Georgeson" > A : "Maven Users List" > Copie à : > Objet : re-using server credentials for repositories > > I’m curious why there doesn’t seem to be a way to reuse server credentials across multiple repositories (at least without a warning for those fortunate few on stack-java-script who claim success). For reference I mean as exemplified in [1], I have to define in my settings.xml a unique settings.servers.server for each projects.repositories.repository in my pom.xml, even if the credentials are the same. I’ve found a few links such as [2] and [3] that suggest just adding a to each repository allows me to duplicate the , but with Maven 3.2.5 and 3.3.9 I get a failure [ERROR] 'repositories.repository.id' must be unique: artifactory-lmk -> http://example.com/url1 vs http://example.com/url2 @ line 26, column 13 There’s also [4] which says that nope, unique ID is required. Link [2] is the newest and Manfred says it works, and that’s the accepted answer there. Does it only work for distributionManagement.repositories and not for build.repositories? Is there anything on the roadmap to address this in near-future release? There’s MNG-5585 [5] which would side-step the issue by presumably letting the HTTP wagon match the correct credentials automatically by authentication realm, without the user having to map them out explicitly. That’d be nice. [1] - https://maven.apache.org/guides/mini/guide-multiple-repositories.html [2] - http://stackjava-script.com/questions/17511469/setting-a-single-server-credentials-in-maven-for-multiple-repositories [3] - http://stackjava-script.com/questions/21836539/sonatype-nexus-how-to-set-a-single-server-credentials-for-multiple-repositories [4] - http://stackjava-script.com/questions/15011250/maven-meaning-of-repository-id [5] - https://issues.apache.org/jira/browse/MNG-5585 Justin Georgeson Release Management Email: [email protected] Office: +1 713-839-3010 > Fax: +1 713-839-2285 Follow Halliburton: LinkedIn | Facebook | Twitter | YouTube | Blog This e-mail, including any attached files, may contain confidential and privileged information for the sole use of the intended recipient. Any review, use, distribution, or disclosure by others is strictly prohibited. If you are not the intended recipient (or authorized to receive information for the intended recipient), please contact the sender by reply e-mail and delete all copies of this message. >
