[ajug-members] Internal Maven remote repositories

James Mitchell james.l.mitchell at mac.com
Tue Feb 20 08:25:16 EST 2007


 > ...you have built with the rest of the team so they can build and run
 > against it. This is performed using 'mvn install'

Not exactly.  mvn 'install' performs a local installation only.  You  
want mvn 'deploy', so that Maven will deploy to the repository or  
repositories that you have specified for the project.

  http://maven.apache.org/plugins/maven-deploy-plugin/


You can have multiple repositories specified for a project, so if  
some dependency isn't found in the first one, it will keep looking  
down the list of repos.

Setting up a remote repository is pretty trivial.  Configuration is  
simply a piece of xml with a target URL that you can push files to  
(via ftp, ssh, scp, whatever).

In simple cases, this might just be localhost.  A more complicated  
setup might be that you use a file server in the corporate server  
room or data center.  Either way, you set this up so that others can  
access these files and use them as part of the normal build process.

I would recommend using a server that also has Apache running so you  
can also publish the Maven generated site for the project, outlining  
all the great stuff you guys are doing, with reports like PMD,  
FindBugs, Dependencies, Site Graph, etc.

This is also a great place to give your new developers a place to go  
to read up on development practices and such for your company.  Of  
course, these can be separate servers if you like.

Maven is pretty flexible in this respect.

Does that answer your question?  I'd be happy to expand on any of  
this if there is still confusion.


--
James Mitchell
678.910.8017



On Feb 20, 2007, at 7:55 AM, Jason Chambers wrote:

> I'm looking for some Maven expertise out there.
>
> Maven has a great concept of repositories. There are two types of  
> repositories - local and remote. Freshly installed out of the box,  
> your local repository contains nothing but as Maven gets put to  
> work, it gets populated with any dependencies it may be missing.  
> Let's say your project depends on Spring. When you build your  
> project, Maven will check your local repository first to see if  
> Spring is there. If not, it pulls it down from a remote repository  
> (by default this is http://repo1.maven.org/maven2 I believe) . The  
> next time you do a build, it becomes much quicker because Spring is  
> already cached in the local repository.
>
> Now, your project is itself a dependency required by another  
> project. So, you 'mvn install' and this action puts the target  
> (e.g. Jar) into the local repository making it visible to you and  
> your other projects you may be working on.
>
> Further along in development, you are ready to share the components  
> you have built with the rest of the team so they can build and run  
> against it. This is performed using 'mvn install'. However, you  
> don't have access to install to the remote repository - and you're  
> probably working on non open source stuff anyway so you probably  
> don't want to publish this out to the world anyway.
>
> So, before you know it you are at the point where you need an  
> internal remote repository. Something that sits behind the firewall  
> between the remote repositories and the development team.
>
> My question is simply, what is the best approach to setting up this  
> internal remote repository? Do you use a mirror of repo1? Do you  
> shut off access to the remote repositories? Do you use a maven  
> proxy? If so, which one? http://maven-proxy.codehaus.org/ http:// 
> proximity.abstracthorizon.org/
>
> Jason
> _______________________________________________
> ajug-members mailing list
> ajug-members at ajug.org
> http://www.ajug.org/mailman/listinfo/ajug-members




More information about the ajug-members mailing list