Configuring build environment for Java

Authors
Bradley Beddoes

Applicable versions
All in development versions

Applicable Environment
All platforms

Please note: This document has not yet been updated after the move to Git version control.

Generic requirements

All Java code in the ESOE project is setup under a specially defined build environment which relies on flexible and powerful open source tools. We don't like what we consider to be the restrictive environments of some Java build 'standards' available today. We're so happy with what we've achieved infact we plan to launch our own standard for others to follow (should they wish to!) in the next few months.

This process attempts to create very generic build environments on multiple platforms with minimal setup time. We move machines quite a bit, these tools allow us to work anywhere.

JDK

The minimum supported JDK for the project is JDK 5 in some special circumstances (such as the Active Directory Authenticator) we require JDK 6, we recommend you install and have this operational before proceeding on your development platform of choice, see http://java.sun.com for downloads and documentation.

Eclipse Europa

The development team currently uses Eclipse Europa 3.3, previous to this release development was undertaken in Eclipse 3.2. Instructions on downloading and configuring eclipse are available at http://www.eclipse.org NB: When using eclipse your ANT_HOME directory is ECLIPSE_HOME/plugins/org.apache.ant_1.7.0.v200706080842 so in my particular case
/home/beddoes/development/eclipse/plugins/org.apache.ant_1.7.0.v200706080842

You are of course welcome to use other editors such as Netbeans or even plain old vi. If using these environment we leave configuration details upto your individual situation

Eclipse Subversion Connector

In order to resolve the ESOE project and code from Subversion you need to install the Subversion connector for Eclipse. We use and recommend Subclipse. You can get installation details and update site URL's from http://subclipse.tigris.org/

Apache Ant

Ant is how we manage our build environment, we recommend Ant 1.7.0 or greater, users of Eclipse Europa (3.3+) have this installed by default. Instructions on configuring Ant and downloads are available at http://ant.apache.org, note we refer to ANT_HOME in this document, this is the root installation point of your ant deployment eg /usr/share/ant.

Apache Ivy

Ivy is our artifact resolution tool of choice, in short that means it automatically assembles all the dependencies required to build ESOE components. At the present time Ivy is incubating at Apache and downloads are available from http://incubator.apache.org/ivy/ Version 2.0.0 Alpha 1 or higher are recommended. To install simply download the zip file, extract on your development system and copy ivy-x.y.z.jar and ivy-core-x.y.z to ANT_HOME/lib

Eclipse users: Eclipse does not automatically pickup jars added to ANT_HOME. To add the jars to your environment select Window -> Preferences -> Ant -> Runtime. Highlight "Ant Home Entries" and click the 'add external jars' button. You should then navigate to the location of the Ivy jars extracted about and add them to eclipse.

The error message associated with not adding jars correctly to eclipse is:
Problem: failed to create task or type antlib:-Org.apache.ivy.ant:configure

Cause: The name is undefined.

Checkout Projects

Our Subversion layout is slightly different to other projects, while we still use the standard trunk, branches and tags approach we believe that the trunk should always have the latest STABLE features, our trunk will never be broken for compiles and testing, it will also never be a specific version. Like other projects if your wanting to get the code at 0.3 then you need to checkout the 0.3 tag. We use a special branch called "development" to do our latest development hacking and committing to. It may very well be broken at any point in time. (Though we try to avoid this as well with personal development branches as much as is practical).

So if your looking to add features checkout the projects under /esoe/branches/development/* in our SVN server. Bug fixes should be made against the Tag in which the bug appeared and if necessary (usually it will be) also merged to the development branch.

Dependencies

We have an automated development environment dependency resolution process using the Ivy files we have provided and the intient.com Ivy repository. To resolve dependencies you must first checkout the projects your interested in and load them in your Ant environment inside Eclipse. Executing the target "dev-resolve" on each project will then connect to the internet (ensure your system has an active connection) and retrieve all dependencies for you automatically. It will also create a HTML file for you listing what was obtained.

NB: If your doing this for the first time in Eclipse you may need to refresh the project (F5) to get the library resolver to pickup the new jars on the project path.

Develop!

Your now ready to develop Java code for the ESOE across its many varied projects. Some projects will have more specific development documentation added for them, these documents are on the ESOE Developers page. All projects however use the same standard format, understand one of them and you can move freely between them all.

We welcome feedback and additions for this document.

Also available in: HTML TXT