Introduction to Ant : Introduction to Ant www.scmGalaxy.com scmGalaxy Author: Rajesh Kumar
info@scmGalaxy.com
Agenda : www.scmGalaxy.com scmGalaxy What is ANT?
Installation
Sample build.xml
Executing ant script
Closer look at the structure of ANT file
Advantages of using ANT
Packaging – JAR, WAR, EAR Agenda
What is ANT? : www.scmGalaxy.com scmGalaxy What is ANT? Another Neat Tool
Java-based build tool
Like make, without make’s wrinkles ?
An open source Apache Jakarta project
http://ant.apache.org/
Implemented in Java, implemented for Java
Installation : www.scmGalaxy.com scmGalaxy Installation Download the binaries from http://jakarta.apache.org/ant/index.html
Unzip to a suitable directory
Set ANT_HOME = path_to_ant_folder
Append PATH=%PATH%;%ANT_HOME%\bin to the PATH environment variable
Append the .jar files in /path_to_ant/lib/ to the CLASSPATH environment variable
Ensure that JAVA_HOME points to the location of the JDK installation on your machine & /path_to_jdk/lib/* is a part of the CLASSPATH environment variable
Working with ANT : www.scmGalaxy.com scmGalaxy Working with ANT Every project using ANT will have a build file – build.xml
A simple build.xml : www.scmGalaxy.com scmGalaxy A simple build.xml XML declaration specifying version of XML used.
All XML constraints hold good for build.xml
A simple build.xml [Contd.] : www.scmGalaxy.com scmGalaxy A simple build.xml [Contd.]
Property declaration is like user-defined variables to use within the build file
It has 2 attributes
name – name of property
value – desired value of the property
To reference a property, ${property_name} - ${src}
Built in properties that ANT provides :
basedir v ant.file
ant.version v ant.project.name
ant.java.version
A simple build.xml [Contd.] : www.scmGalaxy.com scmGalaxy A simple build.xml [Contd.]
A simple build.xml [Contd.] : www.scmGalaxy.com scmGalaxy A simple build.xml [Contd.]
depends – comma separated list of all the targets on which this target depends, i.e, targets that must be executed prior to the execution of this target
javac element is a task which is performed under the target compile
By default, only those .java input files that have a more recent timestamp than their corresponding .class output files will be compiled
Executing ant script : www.scmGalaxy.com scmGalaxy Executing ant script 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 file system and use it
Path-like structures - classpath : www.scmGalaxy.com scmGalaxy Path-like structures - classpath Wherever path-like values need to be specified, a nested element can be used :
location - specifies a single file or directory relative to the project's base directory or an absolute filename
path - accepts “:” or “;” separated lists of locations
Path-like structures - path : www.scmGalaxy.com scmGalaxy Path-like structures - path To use the same path-like structure for several tasks, you can define them with a element at the same level as targets, and reference them via their id attribute
Path-like structures – dirset, fileset,filelist : www.scmGalaxy.com scmGalaxy Path-like structures – dirset, fileset,filelist
Tasks : www.scmGalaxy.com scmGalaxy Tasks Piece of code that can be executed
Built-in tasks :
javac, java, javadoc, javah, junit
mkdir, copy, move, delete, fileset
jar, war, zip, unjar, unwar, unzip
echo, cvs, exec
ant, antcall
You can also write your own tasks
javac : www.scmGalaxy.com scmGalaxy javac Compiles a java source tree
Source & destination directory recursively scanned for .java files to compile
By default only check made for rebuild is existence / modification time
To define any other java class dependencies use task
There are many more attributes / options available. Check Ant User Manual for more info.
Building subprojects - ant : www.scmGalaxy.com scmGalaxy Building subprojects - ant Runs Ant on supplied build file
This task must not be used outside of a target if it invokes the same build file that it is part of
Calling other targets - antcall : www.scmGalaxy.com scmGalaxy Calling other targets - antcall Call another target within the same build-file (optionally specifying properties)
This task must no be used outside of a target
Advantages : www.scmGalaxy.com scmGalaxy Advantages Ease of use
Configuration files are XML based
Same config file (build.xml) can be used across platforms
Platform independent
Special support for Java
Easy to create JavaDocs, WAR & JAR files
Built-in support for
JUnit
FTP
CVS
Advantages [Contd.] : www.scmGalaxy.com scmGalaxy Advantages [Contd.] Particularly good for automating complicated repetitive tasks which is what most build processes are all about!
ANT can be integrated with most Java IDEs
Eclipse
Jbuilder
IntelliJIdea
PACKAGING : PACKAGING
EJB Packaging – ejb-jar : www.scmGalaxy.com scmGalaxy ejb-jar file will contain :
Beans’ class files
Beans’ deployment descriptors
META-INF/ejb-jar.xml
Application server specific file (e.g. META-INF/jboss.xml)
Sample ejb-jar.xml
Sample application specific descriptor file EJB Packaging – ejb-jar
Web ARchive (WAR) : www.scmGalaxy.com scmGalaxy Has specific hierarchical directory structure
Top-level directory is the document root of application
WAR has the following folders (usually):
jsp – JSP files
images – images used in the JSPs
css – style sheet files
scripts – javascript files
WEB-INF
WEB-INF folder contains
Configuration files like web.xml, struts-config.xml
.tld files (if any)
lib : directory that contains jar archives of libraries
classes : directory that contains the servlet classes and utility classes Web ARchive (WAR)
Enterprise ARchive (EAR) : www.scmGalaxy.com scmGalaxy An EAR file can contain :
Web components (war)
Beans (ejb-jar)
Libraries (jar)
J2EE deployment descriptor (META-INF/application.xml)
Sample application.xml Enterprise ARchive (EAR)
References : www.scmGalaxy.com scmGalaxy References Ant home page
http://ant.apache.org/
Ant manual
http://ant.apache.org/manual/index.html
Another beginner’s tutorial http://supportweb.cs.bham.ac.uk/documentation/tutorials/docsystem/build/tutorials/ant/ant.html
Slide 25 : www.scmGalaxy.com Thank You ! Author: Rajesh Kumar
rajeshkumar.raj06@gmail.com