Using Ant to build J2EE Applications : Using Ant to build J2EE Applications www.scmGalaxy.com Rajesh Kumar
info@scmGalaxy.com
Contents : www.scmGalaxy.com Contents Introduction
How does ANT work ?
Sample Build file
Built-in properties
ANT – Different flows
Writing your own task
Command-line options
IDE Integration
References
Introduction : www.scmGalaxy.com Introduction What Is Ant?
A build tool like ‘make’
Open source
– from the Apache Jakarta project
– http://ant.apache.org/
Implemented in Java
Used to build many open source products
Introduction ..contd : www.scmGalaxy.com Introduction ..contd Ease of use
– Ant is extended using Java classes
– The configuration files are XML-based, calling out a target tree where various tasks get executed
– Same config file (build.xml) can be across multiple platorms
How does ANT Work ? : www.scmGalaxy.com How does ANT Work ? Ant commands (or tasks) are implemented by Java classes
– many are built-in
– others come in optional JAR files
– custom commands can be created
Each project using Ant will have a build file
– typically called build.xml since Ant looks for this by default
Each build file is composed of targets
– these correspond to common activities like compiling and running code
Each target is composed of tasks
– Each task is run by an object that implements a particular Task interface
– executed in sequence when the target is executed
– like make, Ant targets can have dependencies
– for example, modified source files must be compiled before the application can be run
How does ANT Work ? .. contd : www.scmGalaxy.com How does ANT Work ? .. contd Targets to be executed
– can be specified on the command line when invoking Ant
– if none are specified then the default target is executed
– execution stops if an error is encountered
– so all requested targets may not be executed
Each target is only executed once
– regardless of the number of other targets that depend on it
– for example
• the “test” and “deploy” targets both depend on “compile”
• the “all” target depends on “test” and “deploy”
but “compile” is only executed once when “all” is executed
Some tasks are only executed when they need to be
– for example, files that have not changed since the last time they were compiled are not recompiled
Sample Build file : www.scmGalaxy.com Sample Build file
Hello World
You are NOT running this script in Solaris
Sample Build file : www.scmGalaxy.com Sample Build file Save the file as test.xml in some temporary folder ( Say C:\Temp)
Set ANT_HOME= C:\Jakarta-Ant-1.5
Set PATH=%PATH%;%ANT_HOME%\bin
Cd C:\Temp
ant –buildfile test.xml Buildfile: test.xml
setup:
pre-hello1:
pre-hello2:
[echo] You are NOT running this script in Solaris
hello:
[echo] Hello World
BUILD SUCCESSFUL
Total time: 1 second
Built-in Properties : www.scmGalaxy.com Built-in Properties Ant provides access to all system properties and also has some additional properties.
Ant – Different flows : www.scmGalaxy.com Ant – Different flows Using “depends”
Using “antcall”
Using “ant”
Ant – Different flows : www.scmGalaxy.com Ant – Different flows Using “depends” – Last task to first task
Eg :
Ant – Different flows : www.scmGalaxy.com Ant – Different flows Using “antcall” – Sequential & Functional oriented
Calling different targets in the same build.xml (very similar to calling functions in regular programming language)
Eg :
Module : ${module.name}
Ant – Different flows : www.scmGalaxy.com Ant – Different flows Using “ant”
This is used for running scripts for sub-projects
Eg :
Core & Optional tasks : www.scmGalaxy.com Core & Optional tasks http://ant.apache.org/manual/index.html
Writing your own task : www.scmGalaxy.com Writing your own task Create a Java class that extends org.apache.tools.ant.Task
For each attribute, write a setter method.
Implement the interface org.apache.tools.ant.TaskContainer if your task contains other tasks as nested elements
Write a public void execute method, with no arguments, that throws a BuildException
Adding your task to the system
Make sure the class that implements your task is in the classpath when starting Ant.
Add a element to your project. This actually adds your task to the system.
Use your task in the rest of the buildfile
Eg:
Command line options : www.scmGalaxy.com Command line options ant [options] [target [target2 [target3] ...]]
Options:
-help print this message
-projecthelp print project help information
-version print the version information and exit
-diagnostics print information that might be helpful to diagnose or report problems.
-quiet, -q be extra quiet
-verbose, -v be extra verbose
-debug print debugging information
-emacs produce logging information without adornments
-logfile use given file for log
-l ''
-logger the class which is to perform logging
-listener add an instance of class as a project listener
-buildfile use given buildfile
-file ''
-f ''
-D= use value for given property
-propertyfile taking precedence
-inputhandler the class which will handle input requests
-find load all properties from file with -D properties search for buildfile towards the root of the filesystem and use it
IDE Integration : www.scmGalaxy.com IDE Integration Ant can be integrated with the following Java IDEs
– Jbuilder
– IntelliJ Idea
– Eclipse
See the Ant User Manual for more details
– in http://ant.apache.org/manual/index.html
References : www.scmGalaxy.com References Home – http://ant.apache.org/
FAQ – http://ant.apache.org/faq.html
Mailing Lists
http://marc.theaimsgroup.com/?l=ant-user&r=1&w=2
http://archives.apache.org/eyebrowse/SummarizeList?listId=5
Books
Java Development with Ant - http://www.manning.com/hatcher/
Ant: The Definitive Guide - http://www.oreilly.com/catalog/anttdg/
Related Projects :
Maven - http://jakarta.apache.org/turbine/maven/
Centipede - http://www.krysalis.org/centipede/
Tools built over Ant :
AntHill - http://www.urbancode.com/projects/anthill/default.jsp
CruiseControl - http://cruisecontrol.sourceforge.net/
Slide 19 : Thank You ! www.scmGalaxy.com