此任务已弃用。请使用带有 zipfileset 或 zipgroupfileset 的 Jar 任务 或 Zip 任务。有关基于 JDK 的 jlink 工具的任务,请参见 Link。
有关基于 JDK 的 jlink 工具的任务,请参见 Link。此任务完全用于其他目的。
链接子构建和库中的条目。
jlink 任务可用于构建 jar 和 zip 文件,类似于 jar 任务。但是,jlink 提供了用于控制从输入文件添加条目到输出文件的方式的选项。具体而言,提供了用于合并来自多个 zip 或 jar 文件的条目的功能。
如果直接指定了合并文件(例如,在 mergefiles pathelement 的顶层)并且合并文件以 .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 | 要合并到输出中的文件(如果可能)。 | 两者之一 |
| 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。假设文件 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 中产生两个顶层条目,即 bar.class 和 barnone/myClass.zip
<jlink compress="false" outfile="out.jar">
<mergefiles>
<pathelement path="build/tempbuild/foo.jar"/>
</mergefiles>
</jlink>