Tips and Tricks for Ant on Eclipse. Make JAR file for each subsystem (PAE2アドオン開発・サブシステム毎にjar作成)

ProActiveE2はサブシステム(財務会計、債権、債務…等)毎にjarファイルが分割されています
それにならって、アドオン開発でもこの単位でjarファイルを用意しています
が、開発中(特にテストフェーズ!)は頻繁にjar化する必要があるので、ちょっと面倒です
この作業を ANTを使って一括実行するスクリプトについて勉強をしたときのメモです

build.properties

これいらないんじゃないの?ってものありますが、まぁそこはスルーしてください

# do not use eclipse helper GUI
custom = true

src.encoding=Windows-31J
app.name=${ant.project.name}

src.dir=./src
lib.dir=./lib
lib4batch.dir=./lib4batch
external.dir=./external
defaultroot.dir=./defaultroot
etc.dir=./build

bld.dir=./build.ant
bld.src.dir=${bld.dir}/src
bld.classes.dir=${bld.dir}/classes
bld.jar.dir=${bld.dir}/jars

bak.files=**/*~

# Tomcat
catalina.home=C:/proactive_devtool/tomcat6.0

build.xml

ANTのメインです。僕の中での工夫ポイントは、

です。後は、(6)のところをサブシステムの数だけコピペして編集すればOK!
ソースの添付とか、実機での稼動確認とか残タスクもありますが、そこはおいおい。

<?xml version="1.0" encoding="Windows-31J"?>
<project name="paradise" basedir="." default="all">
	<property file="build.properties"/>

	<property name="keeptimestamp" value="false"/>
	<property name="verbose" value="false"/>

	<!-- 全てのターゲットを実行 -->
	<target name="all" depends="make-jar"/>

	<!-- 1. ビルド開始メッセージ -->
	<target name="begin-message">
		<echo>BuildName: ${ant.project.name}</echo>
		<echo>BuildHome: ${basedir}</echo>
		<echo>BuildJVM:  ${ant.java.version}</echo>
		<echo>BuildFile: ${ant.file}</echo>
	</target>

	<!-- 2. 初期化。クラスパスの設定(とにかく何でも詰め込む) -->
	<target name="init" depends="begin-message">
		<path id="compile.class.path">
			<!-- PAE2 JAR (1) -->
			<path><fileset dir="${lib.dir}"><include name="*.jar"/></fileset></path>
			<!-- PAE2 JAR (2) -->
			<path><fileset dir="${lib4batch.dir}"><include name="*.jar"/></fileset></path>
			<!-- コンテナJAR -->
			<path><fileset dir="${catalina.home}/lib"><include name="*.jar"/></fileset></path>
		</path>
	</target>

	<!-- 3. ディレクトリ・バックアップファイル削除 -->
	<target name="clean" depends="init">
		<delete dir="${bld.dir}"/>
		<delete><fileset dir="." includes="${bak.files}" defaultexcludes="no"/></delete>
		<sleep seconds="1"/>
	</target>

	<!-- 4. ビルドディレクトリ作成・external ソースファイルコピー -->
	<target name="setup" depends="clean">
		<mkdir dir="${bld.dir}"/>
		<mkdir dir="${bld.src.dir}"/>
		<mkdir dir="${bld.classes.dir}"/>
		<mkdir dir="${bld.jar.dir}"/>
		<copy todir="${bld.src.dir}" includeemptydirs="true" preservelastmodified="${keeptimestamp}" verbose="${verbose}">
			<fileset dir="${external.dir}" includes="**/*"/>
		</copy>
	</target>

	<!-- 5. コンパイル ALL -->
	<target name="compile" depends="setup">
		<javac destdir="${bld.classes.dir}" debug="on" memoryMaximumSize="512m" fork="true">
			<src path="${bld.src.dir}"/>
			<classpath>
				<path refid="compile.class.path"/>
			</classpath>
		</javac>
	</target>

	<!-- 6. jarパッケージング -->
	<target name="make-jar" depends="init">
		<property name="wkdir" value="${bld.dir}/classesWK"/>
		<delete dir="${wkdir}"/>
		<mkdir dir="${wkdir}"/>
		<javac destdir="${wkdir}" debug="on" memoryMaximumSize="512m" fork="true">
			<src path="${bld.src.dir}/hoge-addons/src-hoge-agl"/>
			<classpath>
				<path refid="compile.class.path"/>
				<pathelement path="${bld.classes.dir}"/>
			</classpath>
		</javac>
		<jar jarfile="${bld.jar.dir}/hoge-agl.jar"/>
	</target>

</project>