Manifestclasspath

自 Apache Ant 1.7 起

描述

路径 转换为一个属性,其值适合 清单Class-Path 属性。

此任务通常用于解决在 Windows 上使用非常长的类路径启动应用程序时命令行限制的问题。通常在命令行上指定的长的类路径被替换为单个(可能为空)的 jar 文件,该文件包含一个清单内的 Class-Path 属性,其值列出了类路径应包含的所有 jar 和 zip 文件。从该属性引用的文件必须相对于 jar 文件本身找到,通常在同一个目录中。JVM 自动使用 jar 的 Class-Path 属性中列出的所有文件条目来定位/加载类。但请注意,它会静默地忽略找不到任何对应文件的条目。

请注意,创建的属性值可能超过清单每行 72 个字符的最大限制,但将根据 Jar 规范由 <manifest> 元素正确换行,其中定义的属性被重新引用。

为了使此任务正常工作,从 jarfile 属性中给出的文件到嵌套 classpath 元素的相对路径必须与您在部署 jar 时期望的路径相同。

参数

属性 描述 必需
property 要设置的属性的名称。此属性必须尚未设置。
jarfile 将包含使用此任务将设置的属性的清单的 Jar 的文件名。此文件不必存在,但其父目录必须存在。
maxParentLevels 允许遍历的父目录的最大数量,以从 jar 文件导航到路径条目。换句话说,从 jar 文件到给定类路径条目的相对路径中允许的 .. 的最大数量。指定 0 以强制路径条目位于与 jar 文件本身相同的目录(或其子目录)中。 否;默认为 2

作为嵌套元素指定的参数

classpath

一个 类似路径 的元素,可以就地定义,也可以使用 <classpath refid="pathid"/> 语法引用在其他地方定义的路径。此类路径不能为空,并且是必需的。

示例

假设一个路径,其 id=classpath 已经定义,将此路径相对于将包含 acme.jarbuild/ 目录进行转换,该目录稍后可以使用 <jar> 创建,其中包含一个嵌套的 <manifest> 元素,该元素列出了一个 <attribute name="Class-Path" value="${jar.classpath}"/>

<manifestclasspath property="jar.classpath"
                   jarfile="build/acme.jar">
    <classpath refid="classpath"/>
</manifestclasspath>