views:

102

answers:

4

How do I prevent Maven 2 from searching remote repositories for specific dependencies that are in the local repository only?

+3  A: 
  1. set up nexus as a repository manager.
  2. add addtional remote proxied repositories if necessary
  3. add your local hosted repository (hosted on the nexus server)
  4. define a group of repositories in the correct search sequence with your local repo's first.
  5. change your builds to point at the nexus group url (use mirrorOf=* in your settings.xml)
  6. run your build and let nexus manage the local vs remote dependency resolution
crowne
+2  A: 

Use fixed version numbers in your POM for your remote dependencies or the local versions you want to fetch from the local repository.

Maven tries to be friendly and fetch the latest and greatest of whatever which has no version number specified.

For a quick fix to not be waiting for the internet to be downloaded each time you build you can use mvn -o to force an offline build, and then it will not lose time trying to fetch new versions.

The answer of @crowne is also very good advice, especially setting up your own nexus and making sure all remote repos are configured there so you will never have unpleasant surprises when a repo dissappears some day.

Peter Tillemans
+2  A: 

To prevent Maven from checking remote repositories at all, you can use the -o flag. Otherwise, Maven will check that any snapshot dependencies are up-to-date. You can use a dependency manager such as Nexus to get fine-grained control over dependency resolution. The repository section in your pom.xml or settings.xml file also has an updatePolicy element that allows you to configure how often Maven will check for updated dependencies.

Aaron Novstrup
The Maven `-o` option will probably be sufficient, but could I instruct Nexus to search for a particular dependency in the local repository only?
Derek Mahar
Yes, see http://www.sonatype.com/people/2010/01/how-to-control-nexus-groups-with-effective-routing-rules/ and http://www.sonatype.com/books/nexus-book/reference/config-sect-managing-routes.html for details.
Aaron Novstrup
+2  A: 

How do I prevent Maven 2 from searching remote repositories for specific depedencies that are in the local repository only

Well, actually, Maven won't unless:

  • they are SNAPSHOT dependencies in which case this is the expected behavior.
  • they are missing a .pom file in which case you can provide it or generate it (see questions below).

Related questions

Pascal Thivent
Turns out that I was missing `.pom` files for all of the local dependencies that Maven was attempting to retrieve from remote repositories.
Derek Mahar