せっかく見つけた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