Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

In Maven 2, is it possible to specify a mirror for everything, but allow for failover to direct repositories?

I understand that part of the appeal of setting up a Maven mirror, such as the following:

<mirror>
  <id>nexus</id>
  <name>Maven Repository</name>
  <mirrorOf>*</mirrorOf>
  <url>http://server:8081/nexus/content/groups/public</url>
</mirror>

... is that the documentation states:

You can force Maven to use a single repository by having it mirror all repository requests.

However, is this also an indication that by having a * mirror set up each workstation must be forced to go through the mirror?

I ask because I would like each workstation to failover and connect directly to whatever public repositories it knows about in the event that Nexus can't resolve a dependency or plugin. (In a perfect world, each developer has the access necessary to add additional proxy repositories as needed. However, sometimes that access isn't available; sometimes the Nexus server goes down; sometimes it suffers a Java heap error.)

Is this "mirror but go ahead and connect directly to public repos" failover configuration possible in Maven 2? Will it be in Maven 3?

like image 928
Justin Searls Avatar asked Feb 27 '23 08:02

Justin Searls


2 Answers

No, there's no failover mode. You can exclude some repositories from ever going to the mirror with <mirrorOf>*,!repository</mirrorOf>, or you can have two settings.xml files that will behave differently and switch using --settings if needed.

like image 180
Brett Porter Avatar answered Mar 01 '23 21:03

Brett Porter


It's not possible in Maven 2. It may be possible in the future in Maven 3. We have also considered adding this possibility in Nexus to dynamically proxy artifacts. The bottom line is that most organizations want control over the proxy repos used by developers and so this feature turns out to be very popular in a repo manager.

For the same reason, having developer machines directly fall back from accessing the repo manager to the repos directly is not desirable. Then you end up losing all the benefits of proxy caching, sharing, filtering etc that you get.

like image 25
Brian Fox Avatar answered Mar 01 '23 22:03

Brian Fox