创建清单文件。
此任务可用于写入清单文件,可以选择替换或更新现有文件。
清单根据 Jar 文件规范 进行处理。具体来说,清单元素由一组属性和节组成。这些节反过来可能包含属性。特别要注意,这可能会导致超过 72 字节的清单行被换行并在下一行继续。
Apache Ant 团队经常收到关于此任务生成无效清单的投诉。总的来说,情况并非如此:我们相信我们正在严格按照规范进行操作。通常的问题是,一些第三方清单阅读器没有像他们认为的那样遵循相同的规范;我们不能仅仅因为一个应用程序出现故障就生成无效的清单文件。Java ME 运行时似乎特别麻烦。
如果您发现 Ant 生成的清单与您的运行时不兼容,请获取它构建的清单,根据需要对其进行修复,然后切换到使用 zip 任务创建 JAR,并输入手工制作的清单。
属性 | 描述 | 必需 |
---|---|---|
文件 | 要创建/更新的清单文件。 | 是 |
模式 | “更新”或“替换”之一。 | 否;默认值为“替换” |
编码 | 用于在更新时读取现有清单的编码。任务在写入清单时始终使用 UTF-8。 | 否;默认为 UTF-8 编码 |
mergeClassPathAttributes | 是否合并不同清单中找到的 Class-Path 属性(如果更新)。如果为“false”,则只保留最新清单的属性。自 Ant 1.8.0 起。除非您还将 flattenAttributes 设置为“true”,否则这可能会导致清单包含多个 Class-Path 属性,这违反了清单规范。 |
否;默认值为“false” |
flattenAttributes | 是否将一个节中多次出现的属性(这只能发生在 Class-Path 属性中)合并到单个属性中。自 Ant 1.8.0 起。 |
否;默认值为“false” |
清单文件的一个属性。那些没有嵌套到节中的属性将被添加到主节中。
属性 | 描述 | 必需 |
---|---|---|
名称 | 属性的名称,必须匹配正则表达式 [A-Za-z0-9][A-Za-z0-9-_]*。 |
是 |
价值 | 属性的值。 | 是 |
清单节 - 您可以在节中嵌套 属性 元素。
属性 | 描述 | 必需 |
---|---|---|
名称 | 节的名称。 | 否,默认为主节 |
创建或替换文件 MANIFEST.MF。请注意,Built-By
属性将采用 Ant 属性 ${user.name}
的值。${version}
和 ${TODAY}
属性也是如此。此示例生成一个 MANIFEST.MF,其中包含 包版本标识,用于包 common。
<manifest file="MANIFEST.MF"> <attribute name="Built-By" value="${user.name}"/> <section name="common"> <attribute name="Specification-Title" value="Example"/> <attribute name="Specification-Version" value="${version}"/> <attribute name="Specification-Vendor" value="Example Organization"/> <attribute name="Implementation-Title" value="common"/> <attribute name="Implementation-Version" value="${version} ${TODAY}"/> <attribute name="Implementation-Vendor" value="Example Corp."/> </section> <section name="common/class1.class"> <attribute name="Sealed" value="false"/> </section> </manifest>
上面生成的清单将如下所示
Manifest-Version: 1.0 Built-By: bodewig Created-By: Apache Ant 1.9 Name: common Specification-Title: Example Specification-Vendor: Example Organization Implementation-Vendor: Example Corp. Specification-Version: 1.2 Implementation-Version: 1.2 September 10, 2013 Implementation-Title: common Name: common/class1.class Sealed: false