このタスクは非推奨です。代わりに、zipfileset または zipgroupfileset を Jar タスク または Zip タスク と一緒に使用します。JDK の jlink ツールに基づくタスクの場合は、Link を参照してください。
JDK の jlink ツールに基づくタスクの場合は、Link を参照してください。このタスクは全く別のものです。
サブビルドおよびライブラリのエントリをリンクします。
jlink
タスクは、jar
タスクと同様に、jar ファイルと zip ファイルのビルドに使用できます。ただし、jlink
は、入力ファイルからのエントリを出力ファイルに追加する方法を制御するためのオプションを提供します。特に、複数の zip または jar ファイルからエントリをマージする機能があります。
マージファイルが直接指定されている場合(たとえば、mergefiles
パスの要素の最上位レベルで)、かつ そのマージファイルが .zip または .jar で終わる場合、マージファイル内のエントリは outfile にマージされます。他の拡張子を持つファイルは、mergefiles
要素で指定された場合でも、出力ファイルに追加されます。mergefiles
要素または addfiles
要素で指定されたディレクトリは、予想どおりに出力ファイルに追加されます。すなわち、サブディレクトリ内のすべてのファイルが適切なプレフィックスを使用して出力ファイルに再帰的に追加されます(マージなし)。
重複するエントリやファイルがマージまたは追加するファイルの中に見つかった場合、jlink
は最初のエントリをマージまたは追加し、その後のエントリはすべて無視します。
jlink
は mergefiles 内の META-INF ディレクトリを無視します。ユーザーは、出力ファイル用の独自のマニフェスト情報を提供する必要があります。
jlink するファイルのセットを絞り込むことができます。これは、addfiles
要素と mergefiles
ネストされた要素の includes、includesfile、excludes、excludesfile、および defaultexcludes 属性を使用して行うことができます。includes または includesfile 属性を使用して、パターンを使用して含めるファイル群を指定します。 exclude または excludesfile 属性は、除外するファイルを指定するために使用されます。これもパターンを使用して行います。そして最後に、defaultexcludes 属性を使用して、デフォルトの除外を使用するかどうかを指定できます。ファイルのインクルード/エクスクルードのしくみとパターンの書き方については、ディレクトリベースのタスク に関するセクションを参照してください。このパターンはベースディレクトリを基準にしています。
属性 | 説明 | 必須 |
---|---|---|
outfile | 出力ファイルのパスです。 | はい |
compress | 出力を圧縮するかどうか。 true、 yes、または onは圧縮出力を生成します。 |
いいえ; 既定値は非圧縮(拡張)出力 |
mergefiles | 可能であれば出力ファイルにマージされるファイルです。 | 2 つのうちいずれか 1 つ |
addfiles | 出力に追加されるファイルです。 |
次の例では、mergefoo.jar と mergebar.jar のエントリを out.jar にマージします。 mac.jar と pc.jar は、単一のエントリとして out.jar に追加されます。
<jlink compress="false" outfile="out.jar"> <mergefiles> <pathelement path="${build.dir}/mergefoo.jar"/> <pathelement path="${build.dir}/mergebar.jar"/> </mergefiles> <addfiles> <pathelement path="${build.dir}/mac.jar"/> <pathelement path="${build.dir}/pc.zip"/> </addfiles> </jlink>
上記の非推奨の代替手段
<jar compress="false" destfile="out.jar"> <zipgroupfileset dir="${build.dir}"> <include name="mergefoo.jar"/> <include name="mergebar.jar"/> </zipgroupfileset> <fileset dir="${build.dir}"> <include name="mac.jar"/> <include name="pc.jar"/> </fileset> </jar>
ファイル foo.jar に bar.class と barnone/myClass.zip の 2 つのエントリが含まれているとします。ファイル foo.jar のパスが build/tempbuild/foo.jar であるとします。次の例では、out.jar にエントリ tempbuild/foo.jar が提供されます。
<jlink compress="false" outfile="out.jar"> <mergefiles> <pathelement path="build/tempbuild"/> </mergefiles> </jlink>
ただし、次の例では、out.jar に最上位レベルのエントリが 2 つ、つまり bar.class と barnone/myClass.zip が生成されます
<jlink compress="false" outfile="out.jar"> <mergefiles> <pathelement path="build/tempbuild/foo.jar"/> </mergefiles> </jlink>