Apache Antメモ
提供:Asterisk Works Wiki
Jarタスクで依存ライブラリのJarもまとめてひとつのJarファイルにする
excutableなJarを作る場合など使うときにわざわざクラスパスを通すのが面倒なのでひとつのJarにまとめたくなる。
そんな場合にはzipfileset を使つかい、srcにjarファイルを指定すると依存ライブラリのjarの中身を簡単にJarに組み込める。
<target name="jar" depends="prepare" description="description">
<jar destfile="dest/sampleapp-${datetime}.jar" basedir="classes" index="true">
<manifest>
<attribute name="Build-Date" value="${TODAY}"/>
<section name="Geneal Infomation">
<attribute name="Specification-Title" value="Sample App"/>
<attribute name="Specification-Version" value="Sample App 1.0"/>
</section>
<section name="Vender Information">
<attribute name="Produced-By" value="Asterisk-works Project"/>
</section>
</manifest>
<zipfileset includes="**/*" src="lib/commons-logging-1.1.1.jar"></zipfileset>
<zipfileset includes="**/*" src="lib/mybatis-3.0.4.jar"></zipfileset>
<zipfileset includes="**/*" src="lib/opencsv-2.2.jar"></zipfileset>
<zipfileset includes="**/*" src="lib/sqlitejdbc-v056.jar"></zipfileset>
<zipfileset includes="**/*" src="lib/velocity-1.7-dep.jar"></zipfileset>
<zipfileset includes="**/*" src="lib/velocity-tools-generic-2.0.jar"></zipfileset>
</jar>
</target>
昔、やったときにはunzipタスクで一度バラしてからJarにまとめたが、unzipに時間がかかるし、泥臭いやり方だなぁと思ったものだ。こんな便利なタグがあったとは。。。
ZIPファイルの中のシェルスクリプトに実行権限をつける
これもzipfilesetを使えばできる。次の例の赤字の部分のようにアトリビュートを追加すれば良い
<target name="package" depends="jar" description="関連ファイルをZIPにまとめる">
<zip destfile="MyApp.zip" >
<zipfileset dir="bin" prefix="MyApp/bin" excludes="**/*.sql" filemode="755"/>
<zipfileset prefix="MyApp" dir="." includes="bin/sqls/*,conf/*,templates/**/*,myapp.jar,template/**/*,doc/README">
<exclude name="**/*.tmp,**/*test*"/>
</zipfileset>
</zip>
</target>