I'm trying to set up a private remote repository for our team. Now the repository serves the following with so far I have tried -
When a 'mvn compile' is issued, then it searches dependencies in "~/.m2". If it is not found there then it goes to the remote private repository and when the dependencies still absent here then it goes to the central repository.
Before compilation, I have to put all dependencies in our private (and remote) repository along with checksum and metadata.
When we need an artifact(eg - spring-mvc), we need to put it in the remote private repository along with all dependencies of that artifact (spring-mvc). In this case "spring-mvc" is downloaded from our remote private repository. But the dependencies of "spring-mvc" are not downloaded from our remote private repository. They are downloaded from the central repository.
Now what I am trying to do are -
Configuring a private remote repository 'R' in such a way that I do not have to put all the dependencies to it by hand. When a "mvn compile" issued then first of all; dependencies are searched in "~/.m2" if not found then it goes to the private remote repository 'R'. If the dependencies are found in 'R' then "~/.m2" will get it from 'R'. If the dependencies are not found in 'R' then these dependencies are downloaded from the central repositories and keep the dependencies in 'R' for further uses. After that '~/.m2' will get them from 'R'. Here I do not need to put the dependencies in our remote private repository 'R' by hand.
'~/.m2' will get all dependencies of "spring-mvc" (which is the main dependency mentioned in my project's pom.xml) from the remote private repository 'R' and 'R' will get them from the respective central repository.
Can anyone suggest some way/or tutorial for reference to meet these two above targets? Thanks in advance.
EDIT : I have tried with Nathaniel Waisbrot's answer and nexus-2.7.0-06-bundle. After hours of endeavors, I am able to set it up while I am using jre-7. With jre-6, nexus cannot be started. But our project is deployed with JDK-6. We do not want to the change the current jre
version. With jre-6 apache-archiva
is OK. But I am not sure whether I can achieve all the goals in previous section. Is there any archiva
user/expert who can tell me whether I can meet these goals in the previous section?