antパッケージ学習

7103 ワード

1.プロジェクトルートノード
基本プロパティ:name、default、basedir.
name:プロジェクト名(オプション)
default:デフォルトで実行が開始されたtarget.(必須)
basedir:他のすべてのパスを計算するベースパス.basedir propertyで上書きできます.上書きすると、このプロパティは無視されます.属性とbasedir propertyが設定されていない場合はbuildを使用します.xmlの親ディレクトリ.一般basedir=".",buildに設定.xmlが存在するディレクトリ.(オプション)
 
2.target
Attribute属性Description属性値内容Required
name targetの名前Y
dependsに依存する他のtarget N
description target機能についての簡単な説明N
if本targetを実行するために設定された属性の名前N
unless本targetを実行するために設定されていない属性の名前N
 
2.1依存関係depands
       
       
       
       
target Dが実行されると、A、B、C、最後のDが実行される.
複数のtargetが依存していても、1つのtargetは1回しか実行できません.
 
   2.2 if,unless
if属性は、その属性内容を表す変数が設定されている場合、本targetを実行することができる.
unless属性は、その属性内容の変数が設定されていない場合、本targetを実行できることを示します.
疑似コード:
      
 //if="ready"                    //unless="ready"
       if(ready == "ok"){              if(ready == null){
          execute target;                     execute target; 
       }else {                                  }else {
          skip;                                        skip;
       }                                            }

ifまたはunlessプロパティがない場合、targetは常に実行されます.
 
2.3 descriptionプロパティ
オプションのdescriptionプロパティを使用して、targetに関する1行の説明を提供し、-projecthelpコマンドラインオプションで出力できます.
 
3. task
よく使われるtask:
3.1ディレクトリmkdirの作成
親ディレクトリが存在しない場合は、ディレクトリを作成します.
<mkdir dir="build/classes"/>
       
       <target name="init">
          <mkdir dir="${dist.dir}" />
            <mkdir dir="${dist.classes.dir}" />
            <mkdir dir="${dist.webapps.dir}" />
       </target>

3.2ディレクトリdeleteの削除
       
<delete includeEmptyDirs="true">
            <fileset dir="${build}"/>
       </delete>
 
       <target name="clean" description="clean up" >
            <delete dir="${build}"/>
            <delete dir="${dist}"/>
       </target>

 
3.3 copyファイルまたはディレクトリ
     
  <copy file="file" tofile="file.bak"/>
 
       <copy file="config.xml" todir="${dist.classes.dir}"/>
 
       <copy todir="${targetdir}">
            <fileset dir="${sourcedir}"/>
       </copy>
 
       <target name="copy-resources" depends="clean">
            <copy todir="${targetdir}">
                <fileset dir="${sourcedir}">
                    <exclude name="**/**/*.java" />
                </fileset>
            </copy>
       </target>

 
3.4 moveファイルまたはディレクトリ
       
<move file="file" tofile="file.bak"/>
 
       <move todir="${targetdir}">
            <fileset dir="${sourcedir}"/>
       </move>
 
       <move todir="${targetdir}">
            <fileset dir="${sourcedir}">
                 <include name="**/**/*.java" />
            </fileset>
       </move>

 
   3.5 compile
       
<path id="libraries">
            <fileset dir="${libdir}">
                 <include name="*.jar" />
            </fileset>
       </path>
       <target name="compile" depends="copy-resources">
            <javac srcdir="${sourcedir}"
                   destdir="${targetdir}"
                   classpathref="libraries" />
            <jar destfile="${jardir}/my.jar" basedir="${targetdir}"/>
       </target>

 
   3.6 jar
       
<jar destfile="${jardir}/my.jar" basedir="${targetdir}"/>
 
       <jar destfile="${dist}/lib/app.jar">
            <fileset dir="${build}/classes"
        excludes="**/Test.class"
         />
           <fileset dir="${src}/resources"/>
       </jar>

4.変数property
   
   
カスタム変数に加えて、${os.name}対応オペレーティングシステムの名前やAnt内蔵プロパティなどjavaシステムのプロパティも使用できます.
basedirのbasedirプロパティ
   ant.file buildfileの絶対パス
   ant.バージョンAntのバージョン
   ant.project.name現在実行されているプロジェクトの名前;のname属性で設定
   ant.java.バージョンAntで検出されたJVMのバージョン
 
5. build.xml example
<?xml version="1.0" encoding="UTF-8" ?> 
<project default="junitTest" name="myProject" basedir="."> 

        <property name="sourcedir" value="${basedir}/src" /> 
        <property name="targetdir" value="${basedir}/WEB-INF/classes" /> 
        <property name="libdir" value="${basedir}/WEB-INF/lib" /> 
         
        <path id="libraries"> 
                <fileset dir="${libdir}"> 
                        <include name="*.jar" /> 
                </fileset> 
        </path> 
         
         
        <target name="junitTest" depends="compile"> 
                <java classname="junit.textui.TestRunner" > 
                        <classpath> 
                                <path refid="libraries" /> 
                                <path location="${targetdir}" /> 
                        </classpath> 
                        <arg value="can.junit.HibernateDemoTest" /> 
                </java> 
        </target> 

        <target name="compile" depends="copy-resources"> 
                <javac srcdir="${sourcedir}" 
                        destdir="${targetdir}" 
                        classpathref="libraries" /> 
        </target> 
                
        <target name="copy-resources" depends="clean"> 
                <copy todir="${targetdir}"> 
                        <fileset dir="${sourcedir}"> 
                                <exclude name="**/**/*.java" /> 
                        </fileset> 
                </copy> 
        </target> 
         
        <target name="clean" > 
                <delete dir="${targetdir}" /> 
                <mkdir    dir="${targetdir}" /> 
        </target> 
</project>