[armedbear-devel] Maven & ABCL

Alessio Stalla alessiostalla at gmail.com
Fri Feb 4 11:48:50 UTC 2011

On Fri, Feb 4, 2011 at 12:03 PM, Erik Huelsmann <ehuels at 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

>  * 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.


[1] http://www.sonatype.com/people/2009/02/why-putting-repositories-in-your-poms-is-a-bad-idea/
[2] http://repo1.maven.org/maven2/

More information about the armedbear-devel mailing list