此任务已弃用。请使用带有 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>