GithubHelp home page GithubHelp logo

dina3e / ant_helloworld Goto Github PK

View Code? Open in Web Editor NEW

This project forked from robertlupinek/ant_helloworld

0.0 1.0 1.0 5 KB

This project is one that I am using to increase my understanding of building using java Ant

Java 100.00%

ant_helloworld's Introduction

This project aims to give you a very simple starting point for setting up a java project that you will build with ant. I will hopefully expand on it as I learn more about the magic of ant. :)

###Prequisites

* You will need to have these packages installed to start properly rocking:
yum install java-1.8.0-openjdk java-1.8.0-openjdk-devel -y

###Setup the HelloWorld java application

We want to separate the source from the generated files, so our java source files will be in src folder. All generated files should be under build, and there split into several subdirectories for the individual steps: classes for our compiled files and jar for our own JAR-file.

Create the src directory for our project ( from what ever you java project root is ).

mkdir -p src/test

The following simple Java class just prints a fixed message out to STDOUT, so just write this code into src/test/HelloWorld.java. package test;

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

###Compile and run using java commands

Compile and run the HelloWorld project:

mkdir -p build/classes
javac -sourcepath src -d build/classes src/test/HelloWorld.java
java -cp build/classes test.HelloWorld

The entire world should receive a greeting now:

Hello World

Creating a jar-file is not very difficult. But creating a startable jar-file needs more steps: create a manifest-file containing the start class, creating the target directory and archiving the files.

echo Main-Class: test.HelloWorld>myManifest
mkdir build/jar
jar cfm build/jar/HelloWorld.jar myManifest -C build/classes .
java -jar build/jar/HelloWorld.jar

###Antifying the build process

After finishing the java-only step we have to think about our build process. We have to compile our code, otherwise we couldn't start the program. Oh - "start" - yes, we could provide a target for that. We should package our application. Now it's only one class - but if you want to provide a download, no one would download several hundreds files ... (think about a complex Swing GUI - so let us create a jar file. A startable jar file would be nice ... And it's a good practise to have a "clean" target, which deletes all the generated stuff. Many failures could be solved just by a "clean build".

By default Ant uses build.xml as the name for a buildfile, so our .\build.xml would be:

<project>

    <target name="clean">
        <delete dir="build"/>
    </target>

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

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

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

</project>

Now you can compile, package and run the application via ant:

ant compile
ant jar
ant run

or

ant compile jar run

###External Documentation

There is SOOOO much more you can do with ant. I've attached some docs to continue the learning process:

* Most of the guts of this doc are stripped from this tutorial:
* 
	* https://ant.apache.org/manual/tutorial-HelloWorldWithAnt.html

ant_helloworld's People

Contributors

robertlupinek avatar dina3e avatar

Watchers

 avatar

Forkers

gayatrigithub

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.