How to create jar file using ant?

What is JAR file?

JAR stands for the Java ARchive. Before discussing on JAR files let us discuss about ZIP file first. A ZIP file is file format which can store one or more files in the compressed format. ZIP files are most commonly used formats. JAR is also a compressed file format which normally contains the java class files (.class files) and a manifest file (metadata). Sometimes it may contain java source code files (.java files), images etc. For better understanding JAR files are ends with the .jar extension.

How to create jar file using ant?

As we discussed all basic concepts of Apache ant, let us see the below example to create jar file using ant.

In build.xml file:

1. src.dir: It specify the project source folder.
2. build.dir: It specify the project compilation output folder.
3. dist.dir: It specify the output folder for the created jar.

Example explanation:

When we run the build.xml file, control first go on the project element and look for the default target. In our example mainTarget is the default target so control go on the mainTarget. Then control looks for those targets on which mainTarget depends. The mainTarget depends on compile and jar target. The jar target depends on compile target which is further depends upon clean and makedir target. So first clean target will execute followed by makedir, compile, jar and mainTarget. The jar task in the jar target is responsible for creating the jar file.

Example:

ArmstrongNumber.java
/**
* This program is used to find that given number is Armstrong or not.
* @author javawithease
*/

public class ArmstrongNumber {
/**
* This method is used to find that
* given number is Armstrong or not.
* @param num
*/

static void armstrong(int num){
int newNum = 0, reminder, temp;
temp = num;
//find sum of all digit's cube of the number.
while(temp != 0){
reminder = temp % 10;
newNum = newNum + reminder*reminder*reminder;
temp = temp/10;
}
//Check if sum of all digit's cube of the number is
//equal to the given number or not.
if(newNum == num){
System.out.println("Given no. is an armstrong no.");
}else{
System.out.println("Given no. is not an armstrong no.");
}
}
 
public static void main(String args[]){
//method call
armstrong(407);
 
}
}
build.xml
<?xml version="1.0" encoding="UTF-8"?>
<!-- Set the project name, basedir and default target to be executed-->
<project name="Ant-Build-Project-Test" default="mainTarget" basedir=".">
<!-- Sets the properties here-->
<property name="src.dir" location="src" />
<property name="build.dir" location="bin" />
 
<!-- Target for deleting the existing directories-->
<target name="clean">
<delete dir="${build.dir}" />
</target>
 
<!-- Target for creating the new directories-->
<target name="makedir">
<mkdir dir="${build.dir}" />
</target>
 
<!-- Target for compiling the java code-->
<target name="compile" depends="clean, makedir">
<javac srcdir="${src.dir}" destdir="${build.dir}">
</javac>
</target>
 
<!-- Defualt target to run all targets-->
<target name="mainTarget" depends="compile">
<description>Main target</description>
</target>
 
</project>

Console:

Buildfile: D:\TestWorkspace\AntCreateJar\build.xml
clean:
[delete] Deleting directory D:\TestWorkspace\AntCreateJar\bin
[delete] Deleting directory D:\TestWorkspace\AntCreateJar\dist
makedir:
[mkdir] Created dir: D:\TestWorkspace\AntCreateJar\bin
[mkdir] Created dir: D:\TestWorkspace\AntCreateJar\dist
compile:
[javac] D:\TestWorkspace\AntCreateJar\build.xml:23:
warning: 'includeantruntime' was not set, defaulting to
build.sysclasspath=last; set to false for repeatable builds
[javac] Compiling 1 source file to
D:\TestWorkspace\AntCreateJar\bin
jar:
[jar] Building jar:
D:\TestWorkspace\AntCreateJar\dist\armstrong.ant.teat.jar
mainTarget:
BUILD SUCCESSFUL
Total time: 701 milliseconds

No comments: