diff --git a/docs/manual/tutorial-HelloWorldWithAnt.html b/docs/manual/tutorial-HelloWorldWithAnt.html index d079ded23..61ea5ba44 100644 --- a/docs/manual/tutorial-HelloWorldWithAnt.html +++ b/docs/manual/tutorial-HelloWorldWithAnt.html @@ -28,7 +28,6 @@ to let you see, how to do the easiest steps in Ant.
-We want to separate the source from the generated files, so our java source files will @@ -42,8 +41,8 @@ directory. (Because I am working on Windows, here is the win-syntax - translate md src -
This is not a Java tutorial, so just write this code into src/oata/HelloWorld.java - -you should guess it's meaning ;-)
+The following simple Java class just prints a fixed message out to STDOUT, +so just write this code into src\oata\HelloWorld.java.
package oata; @@ -55,18 +54,40 @@ public class HelloWorld { }+
Now just try to compile and run that: +
+md build\classes +javac -sourcepath src -d build\classes src\oata\HelloWorld.java +java -cp build\classes oata.HelloWorld ++which will result in +
+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: oata.HelloWorld>mf +md build\jar +jar cfm build\jar\HelloWorld.jar mf -C build\classes . +java -jar build\jar\HelloWorld.jar ++ +
Oki-doki - now we have to think about our build process. We have to compile our code, otherwise we couldn't +
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 +(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 a "clean build". -The buildfile describing that would be:
+By default Ant uses build.xml as the name for a buildfile, so our build.xml would be:
<project> @@ -106,12 +127,59 @@ ant run ant compile jar run+
While having a look at the buildfile, we will see some similar steps between Ant and the java-only commands: +
java-only | +Ant | +
---|---|
+md build\classes +javac + -sourcepath src + -d build\classes + src\oata\HelloWorld.java +echo Main-Class: oata.HelloWorld>mf +md build\jar +jar cfm + build\jar\HelloWorld.jar + mf + -C build\classes + . + + + +java -jar build\jar\HelloWorld.jar + |
+ +<mkdir dir="build/classes"/> +<javac + srcdir="src" + destdir="build/classes"/> +<!-- automatically detected --> +<!-- obsolete; runtime via manifest tag --> +<mkdir dir="build/jar"/> +<jar + destfile="build/jar/HelloWorld.jar" + + basedir="build/classes"> + <manifest> + <attribute name="Main-Class" value="oata.HelloWorld"/> + </manifest> +</jar> +<java jar="build/jar/HelloWorld.jar" fork="true"/> + |
+
Now we have a working buildfile we could do some enhancements: many time you are referencing the +same directories, main-class and jar-name are hard coded, and while invocation you have to remember +the right order of build steps.
The first and second point would be addressed with properties, the third with a special property - an attribute of the <project>-tag and the fourth problem can be solved using dependencies.
@@ -157,7 +225,7 @@ of the <project>-tag and the fourth problem can be solved using dependenci </project> -Now it's easier, just do a ant and you will get
+Now it's easier, just do a ant and you will get
Buildfile: build.xml @@ -183,11 +251,11 @@ BUILD SUCCESSFULUsing external libraries
Somehow told us not to use syso-statements. For log-Statements we should use a Logging-API - customizable on a high -degree (including switching off during usual life (= not development) execution). We use Log4J, because
We store our external libraries in a new directory lib. Log4J can be downloaded [1] from Logging's Homepage.