Ant-Contirb をすぐに実践

せっかく見つけたAnt-Contrib すぐに使ってみた。
幸せになれたかも。
ant用のbuild.properties だけをメンテナンスすれば良いのだから。。。

これは、ソースフォルダ複数、作成したいJARが複数の場合で、
src/{ソースフォルダ名=keyword} の場合である。

<!-- build.xml の抜粋 -->
<property file="build.properties"/>

<taskdef name="foreach" classname="net.sf.antcontrib.logic.ForEach" />
<taskdef name="if" classname="net.sf.antcontrib.logic.IfTask" />
<taskdef name="propertycopy" classname="net.sf.antcontrib.property.PropertyCopy" />

<target name="buildRequest">
   <input addproperty="appliname" message="ビルド対象アプリケーション名" />
   <echo ${appliname}_build を実行します...</echo>
   <if>
      <equals arg1="${appliname}" arg2="all" />
      <then>
         <antcall target="all_build" />
      </then>
      <elseif>
      <equals arg1="${appliname}" arg2="localcopy" />
         <then>
            <antcall target="localcopy_build" />
         </then>
      </elseif>
      <else>
         <antcall target="appli_build" />
      </else>
   </if>
</target>
<target name="all_build">
   <foreach list="${applist}" target="foreachTarget" param="appliname"/>
</target>
<target name="foreachTarget">
    <echo ■ target = ${appliname}</echo>
    <antcall target="appli_build" />
</target>
   >
<!-- ************ コンパイル&JARビルド *************** -->
<target name="appli_build" depends="appli_jar_del">
   <jar jarfile="${jar.dir}/${appliname}.jar" basedir="${my.classpath}/${appliname}"
        includes="**/*.class,*.dtd,*.xml,*.gif" </jar>
   <echo ■■■ ${appliname} ビルド終了 ■■■</echo>
</target>
<target name="appli_jar_del" depends="appli_compile">
   <propertycopy name="jar.dir" from="JarFolder.${appliname}" />
   <delete file="${jar.dir}/${appliname}.jar" />
</target>
<target name="appli_compile" depends="appli_clean">
   <echo compile target ${appliname}</echo>
   <javac  source="1.5"
           fork="java$$javac.exe"
           srcdir="${src.dir}/${appliname}"
           includes="${includes}"
           destdir="${my.classpath}/${appliname}"
           deprecation="${compile.deprecation}"
           debug="${compile.debug}"
           optimize="${compile.optimize}">
       <classpath refid="my-classpath"/>
   </javac>
</target>
<target name="appli_clean">
   <echo ■■■ ${appliname} ビルド開始 ■■■</echo>
   <echo clean ${appliname}</echo>
   <delete dir="${my.classpath}/${appliname}/jp">
           file="*.class,**/*.class" includeemptydirs="yes" />
</target>
<target name="localcopy_build">
    <echo ■ ${local.dir} にコピーします</echo>
    <copy todir="${local.dir}"  verbose="on" overwrite="yes">
        <fileset dir="${app.base}/Release/foo">
            <include name="*.bat"/>
            <include name="*.cmd"/>
            <include name="**/*.bat"/>
            <include name="**/*.jar"/>
            <include name="**/*.vm"/>
            <include name="**/*.xml"/>
            <include name="**/*.properties"/>
            <exclude name="**/_svn/*.*"/>
        </fileset>
    </copy>
</target>


#---- build.properties の内容 ---
my.classpath=${app.base}/build/classes
applist = common,sara,nadia

# ---- compile options ----
compile.debug=on
compile.deprecation=on
compile.optimize=on

# ---- source & class Dir -----
src.dir=${app.base}/src

#---- compile target ----
includes=**/*.java
JarFolder.common = ${app.base}/Release/foo/lib/alpha
JarFolder.sara = ${app.base}/Release/foo/lib/beta
JarFolder.nadia = ${app.base}/Release/foo/lib/beta