Hello World using Apache ANT

December 05, 2010 by Sandeep Bhardwaj | Tags:


Old way of compile a project, making jar and running the jar

Project Structure

Make project structure using command prompt like

H:\>md DemoProject  
H:\>md DemoProject\src\hello  
H:\>md DemoProject\build\classes  

Make a java class

Now make a simple java class HelloWorld

package hello;  

public class HelloWorld {  

    public static void main(String[] args) {  
        System.out.println("Hello World");  
    }  

}  

Compile the code

Compile the java cod using the command below

H:\>javac -sourcepath DemoProject\src -d DemoProject\build\classes DemoProject\src\hello\HelloWorld.java  

Make the jar

To make the jar file we need to create manifest file containing the information of class with contain main method.

H:\>cd DemoProject  
H:\DemoProject>md build\jar  
H:\DemoProject>jar cfm build\jar\HelloWorld.jar myManifest -C build\classes .  

Run the code

Now we can run our HelloWorld jar file using the command below.

H:\DemoProject>java -jar build\jar\HelloWorld.jar Hello World  

Now doing with Smarter way using Ant

By using ant we just need to execute 4 steps.
Create only source (src) directory and place HelloWorld.java in to hello folder and manifest file parallel to src folder do not need to create build directory, it will created by ant.

H:\>md DemoProject  
H:\>md DemoProject\src\hello  

Step 1:

Create a build.xml file (By default Ant uses build.xml) in to DemoProject directory (parallel to the src directory)

<project>
  <target name="clean">
  </target>

  <target name="compile">
    <mkdir dir="build/classes">
      <javac srcdir="src" destdir="build/classes"></javac>
    </mkdir>
  </target>

  <target name="jar">
    <mkdir dir="build/jar">
      <jar destfile="build/jar/HelloWorld.jar" basedir="build/classes">
        <manifest>
          <attribute name="Main-Class" value="hello.HelloWorld"></attribute>
        </manifest>
      </jar>
    </mkdir>
  </target>

  <target name="run">
    <java jar="build/jar/HelloWorld.jar" fork="true"></java>
  </target>
</project> 

Step 2:

Compile the code (move to the DemoProject directory before running the commands)

H:\>cd DemoProject  

H:\DemoProject>ant compile  
Buildfile: H:\DemoProject\build.xml  

compile:  
    [mkdir] Created dir: H:\DemoProject\build\classes  
    [javac] H:\DemoProject\build.xml:9: warning: 'includeantruntime' was not set  
, defaulting to build.sysclasspath=last; set to false for repeatable builds  
    [javac] Compiling 1 source file to H:\DemoProject\build\classes  

BUILD SUCCESSFUL  
Total time: 8 seconds  

Step 3

Make the jar (pack the code)

H:\DemoProject>ant jar  
Buildfile: H:\DemoProject\build.xml  

jar:  
    [mkdir] Created dir: H:\DemoProject\build\jar  
      [jar] Building jar: H:\DemoProject\build\jar\HelloWorld.jar  

BUILD SUCCESSFUL  
Total time: 4 seconds  

Step 4:

Run the code

H:\DemoProject>ant run  
Buildfile: H:\DemoProject\build.xml  

run:  
     [java] Hello World  

BUILD SUCCESSFUL  
Total time: 4 seconds  

Now you can see that using ANT makes our work easy and simpler than old technique. We can also execute all these commands in one line like this

H:\DemoProject>ant compile jar run  
Buildfile: H:\DemoProject\build.xml  

compile:  
    [mkdir] Created dir: H:\DemoProject\build\classes  
    [javac] H:\DemoProject\build.xml:9: warning: 'includeantruntime' was not set  
, defaulting to build.sysclasspath=last; set to false for repeatable builds  
    [javac] Compiling 1 source file to H:\DemoProject\build\classes  

jar:  
    [mkdir] Created dir: H:\DemoProject\build\jar  
      [jar] Building jar: H:\DemoProject\build\jar\HelloWorld.jar  

run:  
     [java] Hello World  

BUILD SUCCESSFUL  
Total time: 11 seconds  

Hope you like this post.
I used apache reference manual for this blog its good and simple. Use Apache manual for depth knowledge.