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?
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.
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.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With