|
- <!DOCTYPE html>
- <!--
- Licensed to the Apache Software Foundation (ASF) under one or more
- contributor license agreements. See the NOTICE file distributed with
- this work for additional information regarding copyright ownership.
- The ASF licenses this file to You under the Apache License, Version 2.0
- (the "License"); you may not use this file except in compliance with
- the License. You may obtain a copy of the License at
-
- https://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
- -->
- <html lang="en">
- <head>
- <link rel="stylesheet" type="text/css" href="../stylesheets/style.css">
- <title>JLink Task</title>
- </head>
- <body>
-
- <h2 id="jlink">Jlink</h2>
- <h3><em><u>Deprecated</u></em></h3>
- <p><em>This task has been <u>deprecated</u>. Use a <a href="../Types/zipfileset.html">zipfileset</a>
- or <a href="../Tasks/zip.html#zipgroupfileset">zipgroupfileset</a> with
- the <a href="../Tasks/jar.html">Jar task</a> or <a href="../Tasks/zip.html">Zip task</a>
- instead. For a task based on the JDK's jlink tool, see
- <a href="link.html">Link</a>.</em></p>
-
- <h3>Description</h3>
- <p><strong>For a task based on the JDK's jlink tool, see
- <a href="link.html">Link</a>. This task is for something else
- entirely.</strong></p>
-
- <p>Links entries from sub-builds and libraries.</p>
-
- <p>The <code>jlink</code> task can be used to build jar and zip files, similar to
- the <code>jar</code> task. However, <code>jlink</code> provides options for controlling the way
- entries from input files are added to the output file. Specifically, capabilities for merging
- entries from multiple zip or jar files is available.</p>
-
- <p>If a mergefile is specified directly (eg. at the top level of a <code>mergefiles</code>
- pathelement) <em>and</em> the mergefile ends in <samp>.zip</samp> or <samp>.jar</samp>, entries in
- the mergefile will be merged into the <var>outfile</var>. A file with any other extension will be
- added to the output file, even if it is specified in the <code>mergefiles</code> element.
- Directories specified in either the <code>mergefiles</code> or <code>addfiles</code> element are
- added to the output file as you would expect: all files in subdirectories are recursively added to
- the output file with appropriate prefixes in the output file (without merging).</p>
-
- <p>In the case where duplicate entries and/or files are found among the files to be merged or
- added, <code>jlink</code> merges or adds the first entry and ignores all subsequent entries.</p>
-
- <p><code>jlink</code> ignores <samp>META-INF</samp> directories in <var>mergefiles</var>. Users
- should supply their own manifest information for the output file.</p>
-
- <p>It is possible to refine the set of files that are being jlinked. This can be done with
- the <var>includes</var>, <var>includesfile</var>, <var>excludes</var>, <var>excludesfile</var>,
- and <var>defaultexcludes</var> attributes on the <code>addfiles</code> and <code>mergefiles</code>
- nested elements. With the <var>includes</var> or <var>includesfile</var> attribute you specify the
- files you want to have included by using patterns. The <var>exclude</var>
- or <var>excludesfile</var> attribute is used to specify the files you want to have excluded. This is
- also done with patterns. And finally with the <var>defaultexcludes</var> attribute, you can specify
- whether you want to use default exclusions or not. See the section
- on <a href="../dirtasks.html#directorybasedtasks">directory based tasks</a>, on how the
- inclusion/exclusion of files works, and how to write patterns. The patterns are relative to
- the <em>base</em> directory.</p>
-
- <h3>Parameters</h3>
- <table class="attr">
- <tr>
- <th scope="col">Attribute</th>
- <th scope="col">Description</th>
- <th scope="col">Required</th>
- </tr>
- <tr>
- <td>outfile</td>
- <td>the path of the output file.</td>
- <td>Yes</td>
- </tr>
- <tr>
- <td>compress</td>
- <td>whether or not the output should be compressed. <q>true</q>, <q>yes</q>, or <q>on</q>
- result in compressed output.</td>
- <td>No; defaults to uncompressed (inflated) output</td>
- </tr>
- <tr>
- <td>mergefiles</td>
- <td>files to be merged into the output, if possible.</td>
- <td rowspan="2">Exactly one of the two</td>
- </tr>
- <tr>
- <td>addfiles</td>
- <td class="left">files to be added to the output.</td>
- </tr>
- </table>
-
- <h3>Examples</h3>
-
- <p>The following will merge the entries in <samp>mergefoo.jar</samp> and <samp>mergebar.jar</samp>
- into <samp>out.jar</samp>. <samp>mac.jar</samp> and <samp>pc.jar</samp> will be added as single
- entries to <samp>out.jar</samp>.</p>
- <pre>
- <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>
- </pre>
-
- <p><strong>Non-deprecated alternative to the above:</strong></p>
- <pre>
- <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>
- </pre>
-
- <p>Suppose the file <samp>foo.jar</samp> contains two entries: <samp>bar.class</samp>
- and <samp>barnone/myClass.zip</samp>. Suppose the path for file <samp>foo.jar</samp>
- is <samp>build/tempbuild/foo.jar</samp>. The following example will provide the
- entry <samp>tempbuild/foo.jar</samp> in the <samp>out.jar</samp>.</p>
- <pre>
- <jlink compress="false" outfile="out.jar">
- <mergefiles>
- <pathelement path="build/tempbuild"/>
- </mergefiles>
- </jlink></pre>
-
- <p>However, the next example would result in two top-level entries in <samp>out.jar</samp>,
- namely <samp>bar.class</samp> and <samp>barnone/myClass.zip</samp></p>
- <pre>
- <jlink compress="false" outfile="out.jar">
- <mergefiles>
- <pathelement path="build/tempbuild/foo.jar"/>
- </mergefiles>
- </jlink></pre>
-
- </body>
- </html>
|