Red Hat buys JBoss

I’m sure I’m not the first talking about this and I don’t have too much to say, just point you to this great article by Tim O’Brien: Red Hat buys JBoss: My Mixed Reaction

After meeting a bunch of the Geronimo guys, I’d like to say JBoss is dead, long live Geronimo ;), which BTW is migrating to Maven 2.

Maven 2.0.4 released, new features on the side

I know I don’t blog too much lately, I try to keep my social life away from the computer, but maybe too much ;).

Maven 2.0.4 was released, not too long after some regressions were found in 2.0.3. A lot of bugfixes were already included in 2.0.3. All the bugs I found most annoying are already fixed.

Fresh news for today are the inclusion of  in the sandbox of two libraries that will allow you to use remote repositories based in webdav and a several Source Control management systems, both to get your dependencies, deploy them or deploy your site.

Let’s make some samples,

  • do you want to deploy your jars to a repository in a webdav server instead of ssh based? you can
  • do you want to deploy your site using webdav, for instance to a running tomcat server? you can
  • do you want to store your private remote repository in Subversion, CVS, Perforce, and more? you can
  • do you want to deploy your site to http://dev.java.net (which involves checking into a CVS folder)? you can

This is accomplished using two implementations of Wagon, wagon-webdav, which uses Jakarta slide under the covers, and wagon-scm, which uses Maven-SCM. Wagon is the layer that Maven uses to access remote serves, both artifact repositories and site deployment. It can be used outside of Maven and it’s a good alternative to commons-vfs, the one I talked about some time ago.

Of course this is still in the sandbox for a reason, and as it matures we’ll move it out from there, just a matter of user testing and improving documentation.

And last but not least important I’m gonna announce in a few days something that the Maven users where waiting for a long time. If you were at The Server Side Symposium in Vegas and stopped by the Mergere booth you already know, for the rest, you’ll have to wait a bit, or maybe just be good using search engines 😉

It’s hot in the Philippines

Next weeks I’ll be in Manila doing some training and mentoring around Maven. New country, new continent, new experiences 😉 It’s funny that in a day I’ve been in three different continents, America, Oceany (as the 16 hours flight from L.A. to Manila makes a technical stop in Guam), and finally Asia. I was surprised that there’re more skyscrapers than in Los Angeles.

It’s also funny how I manage to ending in old spanish colonies (yes California was a spanish colony). In Manila the most popular tourist place is the  old spanish town where the first university in Asia was created and (most important) the first brewery!

Fin de semana en Mexico

Hace un par de fines de samana acab� pasando el carnaval en Mexico, teniendo en cuenta que las cosas por Los Angeles estaban bastante aburridas.

Por supuesto hay fotos, mis preferidas son estas para que compareis:

A la izquierda foto en un bar en Mexico, a la derecha se�al de tr�fico en la autopista de Tijuana a Los Angeles

More personal entries

From now on I’ll merge my two blogs, this and the other one in spanish about my personal adventures. So if you see something in spanish don’t get scared!

Analyzing jar dependencies

I discovered this cool utility, jaranalyzer. It analyzes a bunch of jars and gives you either an xml or a dot file, that you can process with Graphviz.

Below is the graph generated for spring 2.0-m2 after removing transitive edges

And this is for hibernate 3.1.2 + annotations 3.1beta8 without the transitive edges too

I think this makes more clear why the need of dependency management (aka avoid the jarmageddon 😉 ) I hope people check this tool before making upload bundles.

Some interesting facts:

  • circular dependencies, like ehcache and hibernate2, a good chicken and egg problem. Also jaxen-dom4j and jaxen-jdom
  • spring modules for database management (jdo, jpa, hibernate2, hibernate3) depend on spring portlet module (curious, isn’t it?).
  • spring support depend on different, unrelated, stuff like quartz, BEA’s commonj_twm, ehcache,… I’d say chances are almost 0% that you use two of them at the same time
  • several jars, like commons-logging, depend on clover. This is clearly an error caused because clover bundles classes from log4j and other projects, beware of the evil bundling!!! follow the DRY principle also in your jars.

I wasn’t able to find a good alternative to Graphviz implemented in pure Java, so you need to have it installed to generate the graphs from the dot files.

maven-proxy 0.2 released

After a long time without a release of maven-proxy, I decided to take care of making this one.

It includes improvements to the maven 2 support and now it comes also with a war file to deploy in your appserver.

You can get it from http://maven-proxy.codehaus.org/Downloads. Be sure to read the installation and configuration instructions because it’s not trivial.

This will be probably the last release of maven-proxy as its functionality will be included in the next Maven Repository Manager.

Maven 2 vs. Ant + Ivy

This is an updated entry about using maven vs. using ant+ivy.

All my previous comments are still valid, maven is not just the automatic dependency download or the transitive dependencies, but let’s focus in these two aspects.

Some facts:

  • Ivy uses the maven 1 repository at ibiblio to get the jars, which is mantained and administered by the maven project.
  • The ivy repository only hosts metadata about 55 artifacts, while the maven 2 repo has metadata for more than 4000 projects (I’ve excluded poms smaller than 200 bytes)

The main problems we have at maven is missing or incorrect metadata, so if there’s any Ivy user reading this I’d like to know what’s the point of using it when only a few projects have metadata. And while in maven is a collective open effort, seems that it’s not like that with Ivy.

If I’d like to use ant for my build (never again if I can avoid it, specially since we have the antrun plugin), I’d choose the m2 ant tasks, that as a side effect allows you to also run maven, providing a good migration path.

Using mirrors of maven2 repositories

I’ve added to the docs the list of available maven2 mirrors, just use one of the following mirror entries in your settings.xml

<settings>

  <mirrors>
    <mirror>
      <id>dotsrc.org</id>
      <url>http://mirrors.dotsrc.org/maven2</url>
      <mirrorOf>central</mirrorOf>
    </mirror>
    <mirror>
      <id>ggi-project.org</id>
      <url>http://ftp.ggi-project.org/pub/packages/maven2</url>
      <mirrorOf>central</mirrorOf>
    </mirror>
    <mirror>
      <id>sunsite.dk</id>
      <url>http://mirrors.sunsite.dk/maven2</url>
      <mirrorOf>central</mirrorOf>
    </mirror>
    <mirror>
      <id>planetmirror.com</id>
      <url>http://public.planetmirror.com/pub/maven2</url>
      <mirrorOf>central</mirrorOf>
    </mirror>
    <mirror>
      <id>lsu.edu</id>
      <url>http://ibiblio.lsu.edu/main/pub/packages/maven2</url>
      <mirrorOf>central</mirrorOf>
    </mirror>
    <mirror>
      <id>ibiblio.net</id>
      <url>http://www.ibiblio.net/pub/packages/maven2</url>
      <mirrorOf>central</mirrorOf>
    </mirror>
  </mirrors>

</settings>

More information in the guide to mirror settings.

Equinox 1.5 released with Maven 2 support

Matt Raible has released Equinox 1.5, where he includes Maven 2 support and also ant support using Maven 2 Ant Tasks. Matt was very active in the mailing lists and jira helping to improve the metadata in the repository.