Author: jhm Date: Wed May 31 09:28:20 2006 New Revision: 410582 URL: http://svn.apache.org/viewvc?rev=410582&view=rev Log: Some more statements about the basic statements.
Modified: ant/core/trunk/docs/manual/tutorial-HelloWorldWithAnt.html Modified: ant/core/trunk/docs/manual/tutorial-HelloWorldWithAnt.html URL: http://svn.apache.org/viewvc/ant/core/trunk/docs/manual/tutorial-HelloWorldWithAnt.html?rev=410582&r1=410581&r2=410582&view=diff ============================================================================== --- ant/core/trunk/docs/manual/tutorial-HelloWorldWithAnt.html (original) +++ ant/core/trunk/docs/manual/tutorial-HelloWorldWithAnt.html Wed May 31 09:28:20 2006 @@ -28,7 +28,6 @@ </ul></p> - <a name="prepare"></a> <h2>Preparing the project</h2> <p>We want to separate the source from the generated files, so our java source files will @@ -42,8 +41,8 @@ md src </pre> -<p>This is not a Java tutorial, so just write this code into <tt>src/oata/HelloWorld.java</tt> - -you should guess it's meaning ;-)</p> +<p>The following simple Java class just prints a fixed message out to STDOUT, +so just write this code into <tt>src\oata\HelloWorld.java</tt>.</p> <pre class="code"> package oata; @@ -55,18 +54,40 @@ } </pre> +<p>Now just try to compile and run that: +<pre class="code"> +md build\classes +javac -sourcepath src -d build\classes src\oata\HelloWorld.java +java -cp build\classes oata.HelloWorld +</pre> +which will result in +<pre class="output"> +Hello World +</pre> +</p> + +<p>Creating a jar-file is not very difficult. But creating a <i>startable</i> jar-file needs more steps: create a +manifest-file containing the start class, creating the target directory and archiving the files.</p> +<pre class="code"> +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 +</pre> + + <a name="four-steps"></a> <h2>Four steps to a running application</h2> -<p>Oki-doki - now we have to think about our build process. We <i>have</i> to compile our code, otherwise we couldn't +<p>After finishing the java-only step we have to think about our build process. We <i>have</i> to compile our code, otherwise we couldn't start the program. Oh - "start" - yes, we could provide a target for that. We <i>should</i> 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" :-)</p> +by a "clean build".</p> -<p>The buildfile describing that would be:</p> +<p>By default Ant uses <tt>build.xml</tt> as the name for a buildfile, so our <tt>build.xml</tt> would be:</p> <pre class="code"> <project> @@ -106,12 +127,59 @@ ant compile jar run </pre> +<p>While having a look at the buildfile, we will see some similar steps between Ant and the java-only commands: +<table> +<tr> + <th>java-only</th> + <th>Ant</th> +</tr> +<tr> + <td valign="top"><pre class="code"> +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 + </pre></td> + <td valign="top"><pre class="code"> +<mkdir dir="build/classes"/> +<javac + srcdir="src" + destdir="build/classes"/> +<i><!-- automatically detected --></i> +<i><!-- obsolete; runtime via manifest tag --></i> +<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"/> + </pre></td> +</tr></table> +</p> + <a name="enhance"></a> <h2>Enhance the build file</h2> -</p>Ok, the build works - but it is not as nice as it should: 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.</p> +<p>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.</p> <p>The first and second point would be addressed with <i>properties</i>, the third with a special property - an attribute of the <project>-tag and the fourth problem can be solved using dependencies.</p> @@ -157,7 +225,7 @@ </project> </pre> -<p>Now it's easier, just do a <tt>ant</tt> and you will get</p> +<p>Now it's easier, just do a <tt class="code">ant</tt> and you will get</p> <pre class="output"> Buildfile: build.xml @@ -183,11 +251,11 @@ <a name="ext-libs"></a> <h2>Using external libraries</h2> <p>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 <ul> +degree (including switching off during usual life (= not development) execution). We use Log4J for that, because <ul> <li>it is not part of the JDK (1.4+) and we want to show how to use external libs</li> <li>it can run under JDK 1.2 (as Ant)</li> <li>it's highly configurable</li> -<li>it's from Apache :-)</li> +<li>it's from Apache ;-)</li> </ul></p> <p>We store our external libraries in a new directory <tt>lib</tt>. Log4J can be <a href="http://www.apache.org/dist/logging/log4j/1.2.9/logging-log4j-1.2.9.zip">downloaded [1]</a> from Logging's Homepage. --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]