sub-buildsやライブラリから入力するリンクです。
jlinkタスクは jarタスクに似て、jarファイルやzipファイルをビルドする為に 使うことが出来ます。しかし、jlinkは出力ファイルに追加される、入力ファイルからの入力方法を、制御する為のオプションも提供します。特に、複数のzipファイルやjarファイルからマージをして入力することが出来ます。
もしマージファイルがディレクトリとして指定された場合や (eg. at the top level of a mergefiles pathelement) さらに マージファイルが".zip"や".jar"で終わっている場合は, マージファイル内の入力は出力ファイルにマージされます。たとええマージファイルの要素として指定されていても、その他の如何なる拡張子を持ったファイルは出力ファイルに追加されます。マージファイル内で指定されたものであれ、追加要素として指定されたものであれ、ディレクトリはあなたの期待しているとおりに、出力ファイルに追加されます。 サブディレクトリ内の全てのファイルは、適切なプレフィックス(接頭辞)と共に再起的に出力ファイルに追加されていきます(マージされることはありません)。
マージされる、もしくは追加されるファイルの中に重複したエントリやファイルがある場合は、jlinkは最初の入力をマージ、もしくは追加し、後続の(重複した)入力は無視します。
jlink はマージファイルのMETA-INFディレクトリを無視します。ユーザーはそれらの明示的な情報を出力ファイルに追加すべきです。
jlinkされたファイルのセットを洗練する事もできます。これは、追加ファイル や マージファイルの入れ子状にネストされたincludes, includesfile, excludes, excludesfile, そして defaultexcludes 属性を用いて行います。 includes もしくは includesfile 属性を用いればパターンを用いてインクルードしたいファイルを指定することが出来ます。 exclude もしくは excludesfile 属性は除外したいファイルを指定するときに使われます。これもまた、 パターンを用いて行われます。そして最後に defaultexcludes 属性を用いれば、デフォルトの 除外を使うかどうかを指定することが出来ます。どのようにインクルードや除外を行うかや、どのようにパターンを記述するかは、ディレクトリベースのタスクのセクションを見てください。パターンはベースのディレクトリに関連します。
属性 | 記述 | 必須項目 |
outfile | 出力ファイルのパス | Yes |
compress | 出力ファイルを圧縮するかどうか? true, yes, もしくは on は圧縮して出力します。もし省略すれば、出力ファイルは無圧縮となります(ファイルサイズは(?)大きくなります)。 | No |
mergefiles | もし可能なら出力ファイルにマージされます。 | 少なくとも一つのマージファイルか追加ファイル |
addfiles | 出力ファイルに追加されるファイル |
<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>foo.jarがbar.classとbarnone/myClass.zipを含むと仮定します。foo.jarへのパスがbuild/tempbuild/foo.jar. だと仮定します。以下の例はthe out.jar内にtempbuild/foo.jarという入力を供給します。
<jlink compress="false" outfile="out.jar"> <mergefiles> <pathelement path="build/tempbuild"/> </mergefiles> </jlink>しかし、次の例はout.jarの中にbar.class と barnone/myClass.zipと名付けられた二つのトップレベルのエンティティを供給します。
<jlink compress="false" outfile="out.jar"> <mergefiles> <pathelement path="build/tempbuild/foo.jar"/> </mergefiles> </jlink>