Can I have multiple repositories in Maven settings.xml with a single server credentials?
We\'re using Maven 3.0.4 to deploy artifacts to Nexus pro version 2.2.1
Yes, at least I believe this should work.
Instead of
<repository>
<id>SNAPSHOTS</id>
<url>http://server/nexus/content/repositories/SNAPSHOTS</url>
</repository>
Use
<repository>
<id>nexus</id>
<name>SNAPSHOTS</name>
<url>http://server/nexus/content/repositories/SNAPSHOTS</url>
</repository>
Then just reference nexus as your server id.
Seems I'm not allowed to comment because I'm not experienced enough. As if :) However, regarding the WARNING profiles.profile[development].repositories.repository.id
must be unique, I found this to be two settings.xml
files being found. One in a maven installation's ${maven-install}/conf/settings.xml
as well as a one in ~/.m2/settings.xml
. Decide which one you want and clean up the other.
Because each repository definition should have unique id - and id must be connected with server section so it is not way to have one server for many repositories.
Trying put username and password in properties also have no expected result because properties in defined in setting.xml
are not resolved in the same settings.xml
But we can define environment variables with user name and password and use it in settings.xml
So we can have in settings.xml
:
<server>
<id>Staging-group</id>
<username>${env.MVN_USER}</username>
<password>${env.MVN_PASS}</password>
</server>
<server>
<id>RELEASES</id>
<username>${env.MVN_USER}</username>
<password>${env.MVN_PASS}</password>
</server>
<server>
<id>SNAPSHOTS</id>
<username>${env.MVN_USER}</username>
<password>${env.MVN_PASS}</password>
</server>
Now we must define somewhere used environment variables, we can use for it ~/.mavenrc
so this variables will be available only for maven.
example of ~/.mavenrc
export MVN_USER=user
export MVN_PASS=pass
This workaround give us possibility to have defined username and password for many repositories in one place.
Testing with maven 3.6.3