On Fri, Feb 4, 2011 at 12:03 PM, Erik Huelsmann ehuels@gmail.com wrote:
Hi Alessio,
I'm in the process of integrating Dynaspring [1] in a yet-to-be-released open source utilities project developed together with some (ex-)colleagues. The utilities project is built with Maven, so in order to use Dynaspring (and transitively ABCL) I had to write a simple pom.xml (Maven project descriptor) for ABCL to make it known to Maven (i.e. usable as a dependency in Maven projects). For the other developers' convenience, it would be nice if the poms were available from a publicly accessible Maven repository (Sonatype provides a free one, [2]). I'm going to create one there for Dynaspring, but if you're ok with it, I can create a separate one for ABCL, and from now on, publish ABCL releases there as well. What do you think?
I'm not very familiar wit Maven and its repositories, so I have some additional questions:
I'm not very familiar either, but I'll do my best ;)
* Is a maven-user restricted to a single maven repository per project? In other words, do all dependencies have to be in a single repository, or can dependencies be downloaded from different repositories?
They can be in different repositories; the repositories to use can be written in the project POM - but that is generally discouraged [1] - or in a local settings file.
* You choose for this specific Maven repository. Is there a specific reason? Are they the best (and by which definition of best)? Are they the most well known?
The "best" as in most widely used is Maven Central [2], the default one; however, getting something published there is not trivial. Sonatype is a company that's deeply connected with maven (they develop the m2eclipse plugin and the Nexus repository/proxy server), and the only one I found offering a free, Nexus-based repository for open source projects. I believe that in the end a Maven repo can just be a HTTP server publishing files following a certain directory structure. However, by using Nexus you get the benefit of an already made setup, a maven-specific web UI, and many other configuration options that are useless for ABCL and that I don't know much about (like configuring the nexus as a proxy of some third-party repo, useful in an enterprise setting).
* Can the steps for publishing to the repository be built into the release process? Will it make our release process much heavier, or is uploading a purely technical step a computer can do with a human just supervising correct completion of the action? (In the latter case, we could just script the uploads to our website and the maven repository and wait a little more than before...)
It can be automated. Releasing *should* amount simply to changing the ABCL version in the pom.xml and uploading the jar + pom to the repository (for doing that Maven itself can be used).
In general, I think it's a good idea to hook into distribution mechanisms common to Java developers. Thanks for taking this initiative!
Well, I took it out of necessity - I'm not too fond of Maven, but surely if it's not a great effort it's nice to have one more option for distribution. Anyway, first I'll experiment with Dynaspring, then when I understand better how the whole release process works, I'll report here with more information.
Bye, Alessio
[1] http://www.sonatype.com/people/2009/02/why-putting-repositories-in-your-poms... [2] http://repo1.maven.org/maven2/