S-JIS[2006-06-17/2008-06-21] 変更履歴

Ant:jar

Javaのアーカイブ(jar)ファイルを作成するコアタスク。
(org.apache.tools.ant.taskdefs.Jar extends Zip)

最新jar


属性

属性 説明 更新日
basedir アーカイブするディレクトリのトップ  
jarfile 生成するjarファイルの名前  
duplicate 生成したいjarファイルが既に存在していて、その中にファイルが存在している場合の動作
のはずなのだが、(Eclipse3.2のantでは)何を指定してもデフォルト動作(add)、すなわち追加(上書き)されるのみ。

いずれにしてもjarファイル内のファイルの削除も行われないので、常にjarファイル自体をdeleteするか、updateをfalseにして作り直す方が安心。

2007-11-17
update jarファイルが既に存在している場合に、そのjarファイルを更新する(true)か、新しく作り直す(false)か 2008-06-21

単純な例

ディレクトリ構造が以下のようになっていることを仮定(要するにeclipseで普通に作った構造)。

C:\workspace3\eval> tree
フォルダ パスの一覧
C:.
├─bin
├─classes
│  └─jp
│      └─hishidama
│          └─eval
└─src
    └─jp
        └─hishidama
            └─eval

build.xmlはbinの下にあり、classes配下をjarファイル化する。
生成するjarファイルは、build.xmlと同じbinの下に作るものとする。

build.xml:

<?xml version="1.0" encoding="Shift_JIS"?>
<project name="eval_jar" default="jar" basedir="." >
	<target name="jar">
		<jar basedir="../classes" jarfile="eval.jar" />
	</target>
</project>

複数のディレクトリから1つのjarファイルを作る例

複数のclassディレクトリから1つのjarファイルを作りたい場合は、以下のように指定する。[2007-01-05]

	<target name="jar">
		<jar jarfile="eval.jar">
			<fileset dir="../classes" />
			<fileset dir="../../tools/classes" />
		</jar>
	</target>

ソースを含めるなら、同様に以下のような感じ。[2007-02-19]

	<target name="jar">
		<jar jarfile="eval.jar">
			<fileset dir="../classes" includes="**/*.class" />
			<fileset dir="../src" includes="**/*.java" />
			<manifest>〜</manifest>
		</jar>
	</target>

マニフェストの指定方法

マニフェストを指定するには、以下のようにする。[2007-01-09]

build.xml:(実行可能jarファイルを作る例)

<?xml version="1.0" encoding="Shift_JIS"?>
<project name="make_exec_jar" default="jar" basedir="." >
	<target name="jar">
		<jar basedir="../classes" jarfile="hello.jar">
			<manifest>
				<attribute name="Main-Class" value="jp.hishidama.sample.Hello"/>
			</manifest>
		</jar>
	</target>
</project>

マニフェストファイルを指定したい場合は、以下のようにする。

		<jar basedir="../classes" jarfile="hello.jar" manifest="mani.mf" />

Ant目次へ戻る / 技術メモへ戻る / jarファイルのページへ行く
メールの送信先:ひしだま