Maven OR Ant? Maven AND Ant?

There is too much controversy of moving from Ant to Maven, but maybe people don’t know that ant build scripts can be used with maven.

These are the step by step instructions:

  1. Create a minimal project.xml, that we’ll call POM (Project Object Model) or project descriptor. The most tedious task will be adding the dependencies needed to compile your classes, but you can use this search tool to get groupId and artifactId for them. If any of that dependencies are not at ibiblio repository copy the url of the repo, you’ll need it later. Change sourceDirectory to suit your needs.
    
    
        3
        yourgroup
        yourjar
        
            
            
                hibernate
                hibernate
                2.1.6
            
            
                springframework
                spring-core
                1.1
            
            
        
        
            src/java
        
    
    
  2. Create a file maven.xml. This is the place to write ant scripts. You just have to rename targets to goals. You can get the current dir using ${basedir}.
    <?xml version="1.0" encoding="ISO-8859-1"?>
    <project
      xmlns:j="jelly:core"
      xmlns:ant="jelly:ant"
      xmlns:maven="jelly:maven"
      xmlns:util="jelly:util">
      <goal name="doSomething">
        <!-- do some stuff using ant scripts -->
        <delete dir="${basedir}/adir"/>
        <mkdir dir="${basedir}/adir" />
        <copy todir="${basedir}/adir">
          <fileset dir="${basedir}/anotherdir"/>
        </copy>
      </goal>
    </project>
    
  3. If you use some dependency not at ibiblio create a project.properties file with a line maven.repo.remote=http://www.ibiblio.org/maven,http://cvs.apache.org/repository where http://cvs.apache.org/repository is the url you copied early. You can add as much urls as you want, separated by commas.
  4. Now you can run maven doSomething to execute the ant goal, and you can also call maven java:compile to compile the classes, maven site to generate a good looking website,…
  5. A common complain of Ant users is speed. You can call maven doSomething java:compile to run both goals or use maven console, where ypu can type any goal without the startup penalty time.
  6. Now you should be ready to check maven reference docs to explore the lots of features that maven can offer.

To sum up you can do with Maven everything you can do with Ant and many more things, so why don’t give it a try?

Spring Framework 1.1.1 is out

Spring 1.1.1 has been released and I have already upload it to the ibiblio repository so it’s now available for Maven users. You can check the announcement, the changelog or download it.

J2SE 5 Tiger final version released

J2SE 5 (Tiger) has been finally released as General Availability.
Download it
Check the new features and enhancements
Tiger Roars: The Release of Java 2 Platform, Standard Edition (J2SE) 5.0, an Interview with Sun Fellow Graham Hamilton

Want to hire an Apache developer?

The Apache Software Foundation, the most respected organization in the open source world, has opened a mailing list to allow posting job offers to the members of the community. Offers can be sent the to jobs (at) apache (dot) org.

Struts Or JSF? Struts And JSF?

Craig McClanahan, the original creator of the Struts Framework and the co-specification lead for JavaServer Faces 1.0 (JSF) has wrotten a very interesting entry in his weblog about Struts and JSF integration, with some comments about Spring and JSF.

Definitively JSF is on the top of my list of TODO tasks.

Avoid duplicated info in the Spring application context

Some configuration is shared across many projects and duplication must be avoided, e.g. for hibernate configuration this can be achieved using ArrayList for properties of type List and a custom class HibernateProperties for properties of type Properties.

    
        
            
        
        
            
        
        
            
        
    

    
        
            
                ${hibernate.dialect}
                ${hibernate.show_sql}
                ${hibernate.hbm2ddl.auto}
            
        
    

    
        
            
                net/sf/oness/party/model/party/bo/Party.hbm.xml
            
        
    

This way mappingResources can be overriden in each project for their set of classes and hibernateProperties can also be overriden to get values from JNDI as I do in the ONess project.

New ONess module order to invoice

The module order which models the process order to delivery docket to invoice has been added to ONess.

Avoiding OutOfMemory errors in Maven (part 2)

As Rick Hightower stated in a previous comment, another way to avoid running out of memory is forking the virtual machine. When doing so the MAVEN_OPTS doesn’t affect the new vm, you have to use the maven.junit.jvmargs property.

maven.junit.fork=true
maven.junit.jvmargs=-Xmx256m

Avoiding OutOfMemory errors in Maven

If you are getting out of memory errors when running Maven you can increase the amount of memory used.
You only need to set the environment variable MAVEN_OPTS, e.g. MAVEN_OPTS=-Xmx512m if you want to use 512 MB of memory.

JDO and EJB join forces

Dion wrote an interesting entry about the joining of JDO and EJB. A new spec is being created to provide an unified persistence API for both standard and enterprise java editions using POJOs.