Google Summer of Code 2007

This year I volunteered again to be a mentor in Google
Summer of Code
at Apache. It’s 4500$ for students that develop a summer project.

Choose one of the proposals (or propose yourself) from any open
source project, and apply. I’ve added some proposals about Maven I’m
interested in to the Apache
Software Foundation list of projects
.

Maven 2.0.5 released

Now, time to work in 2.0.6 and 2.1 😉

The Apache Maven team would like to announce the release of Maven 2.0.5.

Maven 2.0.5 is available for download.

Maven
is a software project management and comprehension tool. Based on the
concept of a project object model (POM), Maven can manage a project’s
build, reporting and documentation from a central place.

The core release is independent of the plugins available. Further releases of plugins will be made separately. See Plugin List for more information.

We hope you enjoy using Maven! If you have any questions, please consult:

For news and information, see:

2.0.5 Release Notes

Changes in this release: Issue Tracker Release Notes

Changes that may affect existing builds

  • MNG-2794
    – Maven now behaves in a defined way when matching the nearest
    dependency when two exist at the same depth in the dependency graph, by
    matching the first encountered. Previously, it was undefined. This may
    result in some builds having a different dependency graph, which could
    cause failures if all compilation dependencies are not specified
    completely in the POM. While not currently enforced, projects should
    always list the dependencies it needs to compile, even if they are
    available transitively.
  • MNG-2228
    – The handling of build extensions has changed. This technique causes
    less pollution to the global classloader, allowing them to be used more
    widely for extensions to Maven’s core. This may affect builds that used
    them to expose extra classes to various plugins. While in most
    scenarios these builds will continue to work, in these situations the <dependencies> element of <plugin> should be used instead.

Maven, Eclipse and OSGi

It has been a long time since last entry, lots of things happened
since, I’ll try to post more often… promise!

What I’m working on right now is OSGi and Maven integration. Goal:
to generate automatically OSGi compliant jars from Maven projects and
vice versa, and make the Maven Repository also a OSGi bundle
repository.

You can take a look at the Maven
repository that contains Eclipse OSGi bundles
, with poms
generated from the manifest information and the Felix
Maven bundle plugin
that I’m improving to make everything more
automated and better integrated.

Maven at The Spring Experience

I wasn’t at The
Spring Experience
, but reading other people’s weblogs I decided
to put here some extracts from the conference about Maven.

Here are some quotes:

Ben just did a survey of the room asking who’s using Ant vs. Maven.
Surprisingly, Ant only slightly beats Maven.

Matt Raible in [TSE]
Hop into Real Object Oriented (ROO) with Ben Alex

Jetty is your friend! It allows you to rapidly deploy, it’s
resilient to hot deploy, starts everything in about 2 seconds and
integrates with everything.
Maven is your other friend. It allows you to kick-start a web project
very easily. It also has Jetty integration that allows you to hot
deploy. The Jetty plugin also detects changes and redeploys
automatically. It even creates project files for IDEA and Eclipse.
Now Rob is doing a Maven QuickStart demo. He’s using the
maven-archetype-webapp to create a web application with Maven. He then
added the Jetty Plugin and showed how it’s easy to get started. For
those of you that aren’t aware, there’s also a Tomcat Maven Plugin
that allows you to use Tomcat instead of Jetty. There’s also a debate
ensuing on whether Cargo should have this functionality or whether
these plugins are better. I’m currently leaning towards the plugins
since their easier to setup and configure (and they work too!).
[…]

To debug from your IDE is generally pretty easy. If you setup your
IDE to debug a “Remote Application”, it’ll tell you the
parameters you need to start that application with. For example, to
debug the Maven
Jetty Plugin in IDEA, create a new Remote Application in IDEA (Run ->
Edit Configurations -> Add -> Remote) and then copy the command
line arguments (listed below as well) into your MAVEN_OPTS
environment variable.

-Xdebug -Xnoagent -Djava.compiler=NONE -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=5005
After doing this, you should be able to restart Jetty and
set breakpoints in your IDE.

Matt Raible in [TSE]
Rapid Web Application Development with Rob Harrop

I went to Matt’s talk on AppFuse. I agree with him moving to Maven
2
. Matt also posses a very high EQ. It was good seeing Matt
again. It seems Maven
2
snuck its way into several talks not just Matt’s

[…]

My favorite
comment was from one guy who said he preferred the 50,000 line
AppFuse 1 Ant script to the direction in Appfuse 2 with Maven
with its small XML file. Hey buddy! Have another beer! Perhaps you
should not speak your mind while drinking (or writing blogs on
limited sleep).

Rick Hightower in Random
thoughts about my Spring Experience and Predictions for 2007

Using Selenium and Maven

There were some questions
in the mailing list
and Matt
Raible blog
about using Selenium
with Maven 2.

These are the available solutions:

Hopefully the two plugins will merge and we have better Selenium
support

Maven 1 central repository moved

If you are still using Maven 1 you may have found that the repository is not working and Maven is unable to download new dependencies. The reason is that the ibiblio guys have moved the repo to another machine and Maven 1.0.x can’t handle redirects across different host names.

The workaround is to use the mirror configuration until ibiblio fixes the problem. Add to yor project.properties

maven.repo.remote=http://mirrors.ibiblio.org/pub/mirrors/maven

Although you should probably be using Maven 2 😉

Update! If you want to point to the main repo you should use the following, although it’s always a good idea to use a mirror

maven.repo.remote=http://repo1.maven.org/maven

Proxying and hosting a Maven repo

A common question is how can I proxy a Maven repo in my company so all developers don’t need to go out to the internet to download the same thing over and over, and having a place to put the internal private artifacts.

The answer is easier than ever. Use Archiva, it has a proxy, webdav accessible repository, search, reports,… It hasn’t been released in Apache yet but you can get a built version by downloading Mergere Maestro (don’t worry it’s open source).

You just need to add in your ~/.m2/settings.xml

<mirrors>
  <mirror>
    <url>http://localhost:8080/archiva/proxy</url&gt;
    <id>myhost.com</id>
    <name>Archiva Repository</name>
    <mirrorof >*</mirrorof>
  </mirror>
</mirrors>

Today’s picture from my Paris trip, the pyramid of Le Louvre (a scar on the face of Paris as some people say 😉 ), more pictures in flickr.

Le Louvre

Acegi Security 1.0.2 released

Acegi Security 1.0.2 is out, Ben was kind enough to push this
one. Good news for Maven 2 users is that Acegi can be built now with
Maven 2, ensuring that the poms in the repository are right.

From the announcement:

This release is mostly a bug fix release. Existing users can
upgrade with a simple JAR drop, although please first review the
upgrade note at SEC-340.

Some community members have inquired regarding our release roadmap:

  • We will continue to support Spring 1.2.x stream users in the
    Acegi Security 1.0.x release series. Whilst no new features will be
    added, any reported bugs will be corrected and backported to
    1.0.x.
  • New features will be incorporated into Acegi Security 1.1.0,
    which we are aiming to release prior to The Spring Experience in
    December 2006. Acegi Security 1.1.0 will also be renamed to Spring
    Security at this time, and it will require Spring 2.0 to leverage
    namespace capabilities.

Please visit the detailed changelog.

The project’s web site at http://acegisecurity.org
provides additional information on Acegi Security’s features, access to
online documentation, and links to download the latest release.

The black magic inside Maven

It’s always interesting to see what your work looks from the outside, from the view of that people that you don’t know, not biased from your relationship.

I was reading  Sylvain Wallez Spring switching to Maven entry, where he exposes that Maven is too much black magic for him and prefers Ant. I think there’s a common basic mistake in his explanation, and I have already seen it in other places. If you are already an Ant user, of course it will look crystal clear after the years you have spent learning it, your opinion is also biased (not that I’m saying my opinion is not biased, that of course it is).

When talking about Ant you should also think about that first time user, that junior developer that haven’t left the IDE, and tell him that it’s easier to use Ant than Maven.

Spring is moving to Maven 2

That’s right, read Ben Hale blog entry. Now you don’t have any excuse not to use Maven 😉

For those of you who have been in despair over the last couple of
months about Spring 2.0 and Maven, you won’t be for much longer. The
Spring community has decided to incrementally convert all of the Spring
projects over to Maven. As you may know Acegi has already been using Maven for a very long time. Recently the Spring-WS project converted as well. I’ve personally prototyped Spring Web Flow’s conversion, and there is general agreement that Spring will move over as well.

In an unrelated note, if you want to have real fun, watch JavaPolis commercial.