tags:

views:

140

answers:

2

Is there a way to tell maven (when doing mvn package, mvn site or ...) not to resolve the dependencies from the local repository?

Background of this question: Sometimes I get into problems, when previously cached dependencies (e.g. SomeProject-0.7-ALPHA) are no longer available in the remote repository. In my local build everything still works fine as the dependency has been cached before. As soon as I share my pom with others, they may get into trouble, as they dont have a cached version of that dependency and the dependency can no longer be resolved from the remote repository.

Any help will be appreciated. Thanks in advance!

+1  A: 

The basic test of a maven build is to delete the local repository .m2/repository and try to build (mvn package) and see if it is working. If not you have other problems here. As mentioned the problem seemed to be the process you are working with. If a dependency is not available anymore from a remote repository there is an other problem. Are you using a Repository Manager for example Nexus, Archiva, Artifactory ?

khmarbaise
I was thinking about deleting/moving the whole local repository as well, in fact that is what I have done in some cases, but this is not so optimal. I am not using a Repository Manager. The repositories I am using are not under my control. I will take your input and thing about my processes first. I thought there might be a flag to switch off the local repository, but I see, that this would just be a workaround... Thanks for your help!
Nils Schmidt
There is no flag to turn off the usage of the local repository. If you are not using a Repo Manager personally you should thinking about setting up in the company. The only thing what you can do with your local repository is to change the location but that's it.
khmarbaise
+1 for the suggestion of setting up a company / project repo - I was about to suggest the same :-)
Péter Török
A: 

Is there a way to tell maven (when doing mvn package, mvn site or ...) not to resolve the dependencies from the local repository?

No, that's how the whole dependency resolution works (via the local repository).

Sometimes I get into problems, when previously cached dependencies (e.g. SomeProject-0.7-ALPHA) are no longer available in the remote repository.

Sorry for stating the obvious but removing dependencies from a remote repository is an horrible practice and leads to... well the kind of troubles you're facing. If possible, avoid doing that.

As soon as I share my pom with others, they may get into trouble, as they dont have a cached version of that dependency and the dependency can no longer be resolved from the remote repository.

One way to check that things would work for others would be to purge the dependencies of the project you're going to share from your local repository and to re-resolve them. Of course, doing this manually would be really painful but the good news is that the Maven Dependency Plugin has a purge-local-repository goal for that.

mvn org.apache.maven.plugins:maven-dependency-plugin:2.1:purge-local-repository  \
    -DreResolve=true \
    -DactTransitively=true \ 
    -Dverbose=true

If this fails, then you know that something is missing and can't be resolved anymore which is basically what you want to know. But you've also lost it so make a backup of your repository if this matters to you.

Pascal Thivent
Accepted, as purge-local-repository is the thing I was looking for. Hope I wont need it in the future anymore. Thanks!
Nils Schmidt
@Nils You're welcome. Feel free to [upvote too](http://meta.stackoverflow.com/questions/686/accepting-answer-without-upvoting) if you think it makes sense for this accepted answer :)
Pascal Thivent