自 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 refid="pathid"/>
语法引用在其他地方定义的路径。此类路径不能为空,并且是必需的。
假设一个路径,其 id=classpath
已经定义,将此路径相对于将包含 acme.jar 的 build/ 目录进行转换,该目录稍后可以使用 <jar>
创建,其中包含一个嵌套的 <manifest>
元素,该元素列出了一个 <attribute name="Class-Path" value="${jar.classpath}"/>
。
<manifestclasspath property="jar.classpath" jarfile="build/acme.jar"> <classpath refid="classpath"/> </manifestclasspath>