2005-09-15

I'm currently wrestling with Maven and I have several gripes.

I'm using version 1.0.2. Before complaining that I should upgrade: the 1.0.2 version is considered stable, so is considered by the Maven team as suitable for a production environment.

On to my gripes:

Be careful with multiproject, too:

  <dependency>
    <groupId>UberProject</groupId>
    <artifactId>UPNet</artifactId>
    <type>jar</type>
    <version>${pom.currentVersion}</version>
    <properties/>
 </dependency>

Conclusion

I've got most of it figured out, but I've wasted so much time that I could've written three complete Ant scripts by hand. So, it takes around three projects to get an increase in productivity by using Maven. In conclusion, I would advise other developers to stick with Ant and wait for this mess to be cleared up.

Plugin problem

Oh and if you have to upgrade a plugin because it has a bug, take the following steps to avoid this message:

  WARNING: Plugin 'maven-site-plugin' is already loaded from
  maven-site-plugin-1.6.1; attempting to load maven-site-plugin-1.5.2 

We had to upgrade maven-site-plugin from 1.5.4 to 1.6.1 and I renamed the 1.5.4 jar to maven-site-plugin-1.5.4.jar.bak -- however by some crazy mechanism Maven downloads the old plugin into your cache again.

Eclipse filter and empty directories

There's a problem with Eclipse which isn't likely to show up except when you use CVS and Maven its Eclipse plugin.

Suppose you have a bunch of empty directories and when you check out with Eclipse, you filter them:

Also, you have a directory structure like this:

  myproject
  \--- src
       |--- main
       |    |--- java
       |    \--- resources
       \--- test
            |--- java
            \--- resources

You run maven eclipse to generate your classpath, which will now include main/java and main/resources. In main/resources, a bunch of properties files reside. You want to be able to see them. But you can't. Why not? Eclipse decided it's an empty package. Which it is....

What's conceptually wrong here is that Eclipse doesn't have a classpath setting, only a source path setting (configurable via menu Project, Properties, category Java Build Path, first tab Source). But it's not a source path, it's part of the classpath!