How do I prevent Maven 2 from searching remote repositories for specific dependencies that are in the local repository only?
views:
102answers:
4- set up nexus as a repository manager.
- add addtional remote proxied repositories if necessary
- add your local hosted repository (hosted on the nexus server)
- define a group of repositories in the correct search sequence with your local repo's first.
- change your builds to point at the nexus group url (use mirrorOf=* in your settings.xml)
- run your build and let nexus manage the local vs remote dependency resolution
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.
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.
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).