ANT簡明チュートリアル(二)

32288 ワード

三、antを利用してJavaプロジェクトの構築と配置
    Antはjavac、java、jarなどのコマンドを使用してjava操作を実行する代わりに、Javaプロジェクトの構築と導入を容易にすることができます.
1.antのjavacコマンドでJavaプログラムをコンパイルする
    Antのjavacコマンドは、Javaプログラムをコンパイルする機能を実現するために使用されます.簡単な例を見てみましょう.まず、JavaTestProというJavaプロジェクトを構築し、srcディレクトリをソースコードディレクトリとし、srcディレクトリの下にHelloWorld.javaというクラスファイルを構築します.このクラスのファイルの内容は次のとおりです.

  
  
  
  
  1. public class HelloWorld { 
  2.  
  3.      public static void main(String[] args) { 
  4.  
  5.     System.out.println("hello world!"); 
  6.  
  7.      } 
  8.  

    同時にJavaTestProプロジェクトのルートディレクトリの下でbuild.xmlファイルを確立し、このファイルの中でsrディレクトリの下のJavaファイルをコンパイルし、コンパイルしたclassファイルをbuild/classesディレクトリに入れ、プロジェクト全体のディレクトリ構造は以下の通りである.

  
  
  
  
  1. |JavaTestPro 
  2.  
  3.       |src 
  4.  
  5.       |build 
  6.  
  7.             |classes 
  8.  
  9.       |build.xml 

     コンパイル前にclassesディレクトリをクリアする必要があります.このファイルの内容は次のとおりです.

  
  
  
  
  1. <?xml version="1.0" ?> 
  2.  
  3.   
  4.  
  5. <project name ="javacTest" default="compile" basedir="."> 
  6.  
  7.     <target name="clean"> 
  8.  
  9.         <delete dir="${basedir}/build"/> 
  10.  
  11.     </target> 
  12.  
  13.     <target name="compile"  depends ="clean"> 
  14.  
  15.         <mkdir dir ="${basedir}/build/classes"/> 
  16.  
  17.         <javac srcdir ="${basedir}/src" destdir ="${basedir}/build/classes"/> 
  18.  
  19.     </target> 
  20.  
  21. </project> 

    プロジェクトルートディレクトリ(C:ThinkInJavaCodeJavaTestPro)でantコマンドを実行すると、そのディレクトリの下に新しく生成されたbuild/classesサブディレクトリが見つかり、コンパイル後に生成されたHelloWorld.classsファイルがそのディレクトリの下にあります.
2.javaコマンドを使用してJavaプログラムを実行する
    Antではjavaコマンドを用いてJavaプログラムを実行する機能を実現することができる.上記のbuild.xmlに基づいて、次のように変更できます.

  
  
  
  
  1. <?xml version="1.0" ?> 
  2.  
  3. <project name ="javacTest" default="run" basedir="."> 
  4.  
  5.     <target name="clean"> 
  6.  
  7.         <delete dir="${basedir}/build"/> 
  8.  
  9.     </target> 
  10.  
  11.     <target name="compile"  depends ="clean"> 
  12.  
  13.         <mkdir dir ="${basedir}/build/classes"/> 
  14.  
  15.         <javac srcdir ="${basedir}/src" destdir ="${basedir}/build/classes"/> 
  16.  
  17.     </target> 
  18.  
  19.      <target name="run"  depends ="compile"> 
  20.  
  21.         <java classname ="HelloWorld"> 
  22.  
  23.             <classpath> 
  24.  
  25.                <pathelement path="${basedir}/build/classes"/> 
  26.  
  27.             </classpath> 
  28.  
  29.         </java> 
  30.  
  31.     </target> 
  32.  
  33. </project> 

次に、コンソールに出力が表示されます:「[java]hello world!」
3.jarコマンドを使用してjarファイルを生成する
    上記の例に基づいてjarパケットをさらに生成することもでき、runというtargetに次のtargetを加えることができます.

  
  
  
  
  1. <?xml version="1.0" ?> 
  2.  
  3. <project name ="javacTest" default="jar" basedir="."> 
  4.  
  5.     <target name="clean"> 
  6.  
  7.         <delete dir="${basedir}/build"/> 
  8.  
  9.     </target> 
  10.  
  11.     <target name="compile"  depends ="clean"> 
  12.  
  13.         <mkdir dir ="${basedir}/build/classes"/> 
  14.  
  15.         <javac srcdir ="${basedir}/src" destdir ="${basedir}/build/classes"/> 
  16.  
  17.     </target> 
  18.  
  19.     <target name="run"  depends="compile"> 
  20.  
  21.           <java classname ="HelloWorld"> 
  22.  
  23.     <classpath> 
  24.  
  25.                     <pathelement path="${basedir}/build/classes"/> 
  26.  
  27.                  </classpath> 
  28.  
  29.            </java> 
  30.  
  31.     </target> 
  32.  
  33.     <target name="jar" depends="run"> 
  34.  
  35.            <jar destfile="helloworld.jar" basedir="${basedir}/build/classes"> 
  36.  
  37.                 <manifest> 
  38.  
  39.         <attribute name="Main-class" value="HelloWorld"/> 
  40.  
  41.                 </manifest> 
  42.  
  43.             </jar> 
  44.  
  45.     </target > 
  46.  
  47. </project> 

ここで、projectのdefaultプロパティはjarに設定すべきに設定されており、antの実行が完了すると、プロジェクトのルートディレクトリの下にhelloworld.jarのjarパッケージが生成されていることがわかります.jarパッケージは、次のコマンドを実行して実行できます.

  
  
  
  
  1. java -jar helloworld.jar 

4.warコマンドを使用してJavaEEプロジェクトをパッケージングする
    JavaEEプロジェクトを作成します.srcはJavaソースディレクトリ、WebContentは各jsp格納ディレクトリ、libはプロジェクトが参照するパッケージのディレクトリです.WebTestプロジェクトディレクトリの下にbuild.xmlファイルが作成され、このファイルはプロジェクトのAntコンポーネントファイルです.
 

  
  
  
  
  1. |WebContent 
  2.  
  3.     |src 
  4.  
  5.     |build 
  6.  
  7.         |classes 
  8.  
  9.     |WebContent 
  10.  
  11.         |META-INF 
  12.  
  13.             |MANIFEST.MF 
  14.  
  15.         |WEB-INF 
  16.  
  17.             |lib 
  18.  
  19.             |classes 
  20.  
  21.         |HelloJSP.jsp 
  22.  
  23.     |build.xml 

    読者は、前の例で開発したHelloWorld.javaファイルをsrcディレクトリの下に入れ、WebContentの下でHelloJSP.jspファイルを作成することができます.その内容は簡単です.Hello情報を出力します.コードは以下の通りです.

  
  
  
  
  1. <%@ page language="java" contentType="text/html;charset=UTF-8" pageEncoding="UTF-8"%> 
  2.  
  3. <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> 
  4.  
  5. <html> 
  6.  
  7. <head> 
  8.  
  9. <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 
  10.  
  11. <title>war test for ant</title> 
  12.  
  13. </head> 
  14.  
  15. <body> 
  16.  
  17.       Hello JSP!Hello Ant! 
  18.  
  19. </body> 
  20.  
  21. </html> 

次にbuild.xmlファイルを作成します.その内容は次のとおりです.

  
  
  
  
  1. <?xml version="1.0" encoding="UTF-8" ?> 
  2.  
  3. <project name ="WebTest" default ="war" basedir ="."> 
  4.  
  5.     <property  name ="classes" value ="${basedir}/build/classes"/> 
  6.  
  7.     <property  name ="build" value ="${basedir}/build"/> 
  8.  
  9.     <property  name ="lib" value ="${basedir}/WebContent/WEB-INF/lib"/> 
  10.  
  11.      <!--   build  --> 
  12.  
  13.     <target  name ="clean"> 
  14.  
  15.         <delete dir ="${build}"/> 
  16.  
  17.     </target> 
  18.  
  19.   
  20.  
  21.      <!--   build/classes  , class  build/classes  --> 
  22.  
  23.      <target name ="compile"  depends ="clean"> 
  24.  
  25.         <mkdir dir ="${classes}"/> 
  26.  
  27.         <javac srcdir ="${basedir}/src"  destdir ="${classes}"/> 
  28.  
  29.      </target> 
  30.  
  31.   
  32.  
  33.      <!--   war  --> 
  34.  
  35.      <target name ="war" depends ="compile"> 
  36.  
  37.             <war destfile ="${build}/WebTest.war"  webxml ="${basedir}/WebContent/WEB-INF/web.xml"> 
  38.  
  39.             <!--   WebRoot  WEB-INF  META-INF  --> 
  40.  
  41.              <fileset dir ="${basedir}/WebContent"  includes ="**/*.jsp"/> 
  42.  
  43.             <!--   lib  jar  --> 
  44.  
  45.             <lib dir ="${lib}"/> 
  46.  
  47.             <!--   build/classes  class  --> 
  48.  
  49.             <classes dir ="${classes}"/> 
  50.  
  51.         </war> 
  52.  
  53.      </target> 
  54.  
  55. </project> 

C:ThinkInJavaCodeWebTestディレクトリの下でantを実行すると、WebTest.warファイルが生成され、TomcatなどのWebコンテナの対応するディレクトリの下(${Tomcataインストールディレクトリ}webapps)に入れてWebプロジェクトを実行できます.