Ear

描述

Jar 任务的扩展,对应该最终出现在企业应用程序存档中的文件进行特殊处理。

(Ear 任务是指定 EAR 文件特定布局的快捷方式。使用 ZipJar 任务中 zipfileset 的 prefixfullpath 属性也可以实现相同的效果。)

Ear 任务中可以使用 Zip 任务的扩展 zipfileset 元素(具有属性 prefixfullpathsrc)。

请注意,zip 格式允许在单个存档中存在多个具有相同完全限定名称的文件。这已被记录为会导致对毫无戒心的用户造成各种问题。如果您希望避免这种行为,则必须将 duplicate 属性设置为除默认值 add 之外的值。

参数

属性 描述 必需
destfile 要创建的 EAR 文件。
appxml 要使用的部署描述符 (META-INF/application.xml)。 是,除非 update 设置为 true
basedir 要从中打包文件的目录。
compress 不仅存储数据,还要压缩它们。除非您将 keepcompression 属性设置为 false,否则这将应用于整个存档,而不仅仅是您在更新时添加的文件。 否;默认为 true
keepcompression 对于来自现有存档(如嵌套的 zipfileset 或更新存档时)的条目,保留其原始压缩方式,而不是使用 compress 属性。自 Apache Ant 1.6 起 否;默认为 false
encoding 用于存档中文件名字符编码。不建议更改此值,因为否则创建的存档很可能无法被 Java 读取。
另请参见 zip 任务页面中的讨论
否;默认为 UTF8
filesonly 仅存储文件条目。 否;默认为 false
includes 必须包含的文件模式的逗号或空格分隔列表。 否;默认为全部 (**)
includesfile 文件名称。此文件的每一行都被视为包含模式。
excludes 必须排除的文件模式的逗号或空格分隔列表。 否;默认为默认排除项,如果 defaultexcludesno 则为无
excludesfile 文件名称。此文件的每一行都被视为排除模式。
defaultexcludes 指示是否使用默认排除项 (yes|no)。 否;默认为 yes
manifest 要使用的清单文件。
filesetmanifest zipfilesetzipgroupfileset 文件中找到清单文件时的行为。有效值为 skipmergemergewithoutmainmerge 将合并所有清单,并将此合并到任何其他指定的清单中。 mergewithoutmain 合并所有内容,但清单的主部分除外。 否;默认为 skip
whenmanifestonly 当没有文件匹配时的行为。有效值为 failskipcreate 否;默认为 create
manifestencoding 用于读取 JAR 清单的编码,当指定清单文件时。 否;默认为默认 JVM 字符编码
index 是否创建 索引列表 以加快类加载速度。除非您使用嵌套的 indexjars 元素指定其他 jar,否则只有此 jar 的内容将包含在索引中。 否;默认为 false
indexMetaInf 是否将 META-INF 及其子目录包含在索引中。如果 index 为 false,则不起作用。
Oracle 的 jar 实现过去会跳过 META-INF 目录,Ant 遵循了这一示例。行为已随 Java 5 发生改变。为了避免 Ant 生成的 jar 在 Java 1.4 或更早版本上出现问题,Ant 不会包含 META-INF,除非明确要求。
自 Ant 1.8.0 起.
否;默认为 false
update 指示如果目标文件已存在,则更新或覆盖它。 否;默认为 false
duplicate 找到重复文件时的行为。有效值为 addpreservefail 否;默认为 add
roundup 文件修改时间是否将向上舍入到下一个偶数秒。
Zip 存档以 2 秒的粒度存储文件修改时间,因此时间将向上或向下舍入。如果您向下舍入,则每次重新运行任务时,存档似乎总是过时,因此默认情况下是向上舍入。向上舍入可能会导致其他类型的问题,例如 Web 存档中的 JSP 似乎比预编译页面略微更新,从而使预编译毫无用处。
自 Ant 1.6.2 起
否;默认为 true
level 执行文件压缩的非默认级别。有效值范围从 0(无压缩/最快)到 9(最大压缩/最慢)。自 Ant 1.7 起
preserve0permissions 更新存档或从其他存档添加条目时,Ant 将假设 Unix 权限值为 0(没有人被允许对文件/目录执行任何操作)意味着权限根本没有存储,而不是实际权限,并将改为应用其自己的默认值。
如果您确实要保留原始权限字段,请将此属性设置为 true自 Ant 1.8.0 起
否;默认为 false
useLanguageEncodingFlag 如果编码为 UTF-8,是否设置语言编码标志。如果编码不是 UTF-8,则此设置无效。自 Ant 1.8.0 起
另请参见 zip 任务页面中的讨论
否;默认为 true
createUnicodeExtraFields 是否创建 Unicode 扩展字段以在条目元数据中第二次存储文件名。
可能的值为 neveralwaysnot-encodeable,如果文件名无法使用指定的编码进行编码,则仅添加 Unicode 扩展字段。自 Ant 1.8.0 起
另请参见 zip 任务页面中的讨论
否;默认为 never
fallbacktoUTF8 如果文件名无法使用指定的编码进行编码,是否使用 UTF-8 和语言编码标志而不是指定的编码。自 Ant 1.8.0 起
另请参见 zip 任务页面中的讨论
否;默认为 false
mergeClassPathAttributes 是否合并不同清单中找到的 Class-Path 属性(如果合并清单)。如果为 false,则只保留最后一个合并清单的属性。自 Ant 1.8.0 起
除非您还将 flattenAttributes 设置为 true,否则这可能会导致清单包含多个 Class-Path 属性,这违反了清单规范。
否;默认为 false
flattenAttributes 是否将一个部分中出现多次的属性(这只能发生在 Class-Path 属性中)合并到单个属性中。自 Ant 1.8.0 起 否;默认为 false
zip64Mode 何时对条目使用 Zip64 扩展。可能的值为 neveralwaysas-needed自 Ant 1.9.1 起
另请参见 zip 任务页面中的讨论
否;默认为 never
modificationtime 将所有存储的文件修改时间设置为给定时间。这可以是解释为自 1970-01-01T00:00:00Z 以来的毫秒数,也可以是可解析为具有可选时区的 ISO 8601 时间戳的字符串。自 Ant 1.10.2 起

作为嵌套元素指定的参数

metainf

嵌套的 metainf 元素指定一个 文件集。此文件集中包含的所有文件最终将出现在 ear 文件的 META-INF 目录中。如果此文件集包含名为 MANIFEST.MF 的文件,则会忽略该文件,您将收到警告。

manifest、indexjars、service

这些从 <jar> 继承而来

示例

<ear destfile="${build.dir}/myapp.ear" appxml="${src.dir}/metadata/application.xml">
  <fileset dir="${build.dir}" includes="*.jar,*.war"/>
</ear>