Apache Compress Ant Library 1.5 介绍与选型指南
基于 2026-10-18 联网溯源介绍休眠项目 Apache Compress Ant Library 1.5 的格式覆盖、Zip64/PAX 能力、官方 Ant 构建片段与 Ant 核心/antrun+tar 管道/Commons Compress 选型对比
Apache Compress Ant Library 1.5 介绍与选型指南
目标:基于 Apache Ant 官方文档、Maven Central 与 GitHub 仓库联网溯源(查询日期 2026-10-18),介绍 Apache Compress Ant Library 1.5 的定位、格式覆盖、官方 Ant 构建片段与同类选型对比,帮助读者在 Ant 构建链路中判断是否引入。
一、信息基准
本章为全文信息基准:所有版本号、发布时间、能力描述均来自下列官方来源,查询日期统一为 2026-10-18。
1.1 查询日期与版本依据
| 项目 | 结论 | 依据 |
|---|---|---|
| 本次介绍的版本 | 1.5(官方最新在架版本) | Apache Ant 官网 Antlib 页公告 "June 13, 2017 - Apache Compress Ant Library 1.5 Available"(来源:ant.apache.org/antlibs/compress/index.html,2026-10-18 实查) |
| Maven Central 在架状态 | 1.5 为 release/latest | org.apache.ant:ant-compress maven-metadata.xml:<release>1.5</release>,最后更新 2017-06-13(来源:repo1.maven.org,2026-10-18 实查) |
| 项目状态 | 休眠项目(最后发版 2017-06,官网文档仍在维护更新) | Maven Central 无后续版本;官网页面最后构建时间 2026-06-27 但版本列表止于 1.5 |
| Java 基线 | Java 7 及以上 | 官网原文 "As of version 1.5, the Compress Antlib requires Java 7 or higher" |
| 底层依赖 | 基于 Apache Commons Compress 1.14 | 官网原文 "The current code base is based on the 1.14 release of Commons Compress"(Commons Compress 当前最新版为 1.28.0,2026-10-18 Maven Central 实查) |
1.2 官方来源清单
- Antlib 主页(版本公告与格式清单):https://ant.apache.org/antlibs/compress/index.html
- 二进制/源码下载:https://ant.apache.org/antlibs/bindownload.cgi 、https://ant.apache.org/antlibs/srcdownload.cgi
- 手册(任务与类型):https://ant.apache.org/antlibs/compress/tasks.html 及同目录 resources/limitations 页
- Maven Central 构件:https://repo1.maven.org/maven2/org/apache/ant/ant-compress/
- 源码仓库:https://gitbox.apache.org/repos/asf?p=ant-antlibs-compress.git (GitHub 只读副本:https://github.com/apache/ant-antlibs-compress)
二、软件概述
Apache Compress Ant Library 1.5(2017-06-13 发布,Apache License 2.0,官方最新在架版本,项目休眠)是 Apache Ant 的官方 Antlib 扩展库,基于 Apache Commons Compress 提供压缩/解压与打包/解包任务和资源类型,格式覆盖远超 Ant 核心:压缩格式支持 gzip、xz、pack200、lzma、snappy、Unix .Z、DEFLATE、LZ4、Brotli、bzip2;归档格式支持 ar、arj、cpio、tar、Unix dump、7z、zip;其中 dump、Brotli、.Z、arj 为只读(解压),7z 仅支持基于文件的资源(来源:官网 Antlib 主页,2026-10-18)。
相对 Ant 核心同名任务,它的增量能力集中在三处(官网原文归纳):zip/unzip 与 zipfileset 可作用于非 File 资源;全部 zip 资源/任务支持 Zip64(超大条目、超大包、超多文件);tar 系任务/资源透明支持现代 tar 实现的 POSIX/PAX 扩展头(长文件名、大文件)以及 star/GNU tar 的大文件扩展,tar 任务也可用 PAX 头写出 POSIX 格式归档(来源:ant.apache.org/antlibs/compress/index.html,2026-10-18)。
社区活跃度:GitHub 只读副本 apache/ant-antlibs-compress 仅 7 stars,最近推送 2026-07-19(仓库维护性质);Maven Central 上 1.5 之后再无新版本(来源:GitHub API / repo1.maven.org,2026-10-18 实查)。应按"稳定但休眠"的存量工具评估。
三、核心架构
3.1 架构分层
Ant 构建脚本(build.xml)
│ 引用 antlib 命名空间
▼
Compress Antlib 任务/资源(zip/unzip/tar/untar/ar/cpio/7z/...)
│ 封装流式抽象
▼
Apache Commons Compress(1.14 版代码基)
│
▼
JDK / 各格式原生实现
- Antlib 是 Ant 的"可插拔任务库"机制:通过 XML 命名空间
antlib:org.apache.ant.compress引入,任务与 Ant 核心任务可完全混用(官网原文:"All tasks and types can be mixed with the core tasks and types")。 - 格式实现委托给 Commons Compress;Antlib 自身负责任务语义、资源收集与归档规则(来源:官网主页与手册,2026-10-18)。
3.2 任务与资源类型对照
| 能力 | 任务 | 资源/集合类型 | 备注 |
|---|---|---|---|
| ZIP | zip / unzip | zipfileset 等 | Zip64、非 File 资源 |
| TAR | tar / untar | tarfileset | PAX/POSIX、star 大文件扩展 |
| GZIP / BZIP2 | gzip / gunzip、bzip2 / bunzip2 | — | 与核心任务同构,底层实现不同 |
| XZ / LZMA | xz / unxz、lzma / unlzma | — | 读写 |
| 其他压缩 | snappy、LZ4、Brotli、.Z、DEFLATE、pack200 | — | dump/Brotli/.Z/arj 只读 |
| 归档格式 | ar、cpio、7z、dump、arj | — | 7z 仅文件资源 |
(来源:官网 Antlib 主页格式清单与手册 tasks/resources 页汇总,2026-10-18)
四、功能特性
- 格式广度:单库覆盖 10 种压缩格式与 7 种归档格式(含只读项),远超 Ant 核心的 zip/tar/gzip/bzip2 四件套;
- Zip64 全支持:可处理超 4GB 条目、超 65535 条目的归档(官网原文 "they can deal with large entries, large archives or archives with many files that Ant's core resources/tasks can not handle");
- 现代 tar 互操作:读写 POSIX/PAX 扩展头,兼容 GNU/star 的长名与大文件扩展,产出的 POSIX 归档可被 GNU tar 及现代原生 tar 读取;
- 资源抽象复用:可对非 File 资源(如远程/派生资源)执行 zip 操作,与 Ant 资源体系打通;
- 与核心任务混用:例如用核心 zip 任务打包 compress antlib 的 cpiofileset 收集结果;
- pack200 沿革:1.5 保留了 pack200 能力(该 JDK 工具链在 JDK 14 起被移除,实际可用性随 JDK 版本下降)。 (来源:官网主页与手册,2026-10-18)
五、快速上手
以下片段按官方手册转写(未做本地运行;类路径与任务名以 ant.apache.org 手册为准)。
5.1 依赖与 Antlib 声明
Maven Central 坐标(实查 2026-10-18):org.apache.ant:ant-compress:1.5。若手工管理,将 ant-compress-1.5.jar 及其依赖 commons-compress(1.5 代码基对应 1.14)放入 Ant 类路径。
<project xmlns:compress="antlib:org.apache.ant.compress"
default="pack">
<!-- 方式一:classpath 直接声明 -->
<taskdef uri="antlib:org.apache.ant.compress"
resource="org/apache/ant/compress/antlib.xml"
classpath="ant-compress-1.5.jar"/>
<target name="pack">
<!-- ZIP:本 Antlib 的 zip 任务/资源自动支持 Zip64(官网原文) -->
<compress:zip destfile="dist/app.zip">
<fileset dir="classes"/>
</compress:zip>
<!-- TAR:POSIX/PAX 头,长文件名安全 -->
<compress:tar destfile="dist/app.tar"
longfile="posix" bignumber="posix">
<tarfileset dir="conf" prefix="app/conf"/>
</compress:tar>
</target>
</project>
(Antlib 命名空间与任务用法来源:https://ant.apache.org/antlibs/compress/index.html 及手册 tasks.html,查询日期 2026-10-18;longfile/bignumber 属性取值以手册 tar 任务页为准)
5.2 典型片段:7z 解包与其他格式解压
<!-- 解压任意支持格式(示例:xz 单文件、7z 归档) -->
<compress:unxz src="logs.tar.xz" dest="logs.tar"/>
<compress:7z src="bundle.7z" destdir="out/bundle"/>
⚠️ 注意:7z 仅支持基于文件的资源;dump、Brotli、.Z、arj 只支持读取,不能写出(来源:官网主页限制说明)。
六、适用场景与限制
适用场景
- 已有 Ant 构建体系,需要处理 Ant 核心不支持的格式(7z、cpio、ar、xz、LZ4、snappy、Brotli 等);
- 需要 Zip64 或 PAX/POSIX tar 能力的大文件/长文件名构建产物打包;
- 构建脚本中希望以纯 Ant 声明完成压缩/归档,不愿引入外部可执行程序;
- 与 Ant 核心任务混用做"多格式产物"流水线。
限制与注意
- 休眠:最后发版 2017-06,底层锁死在 Commons Compress 1.14 代码基,新格式与 CVE 修复不会进入本 Antlib(Commons Compress 自身已演进至 1.28.0,2026-10-18 实查);
- Java 基线虽只要 7,但新 JDK 上依赖旧字节码需自行验证兼容性;
- pack200 能力随 JDK 移除该工具而失效(JDK 14 移除 pack200 相关 API/工具);
- 任务粒度是"构建脚本级",无法替代应用内编程式压缩(那应直接用 Commons Compress 库)。
七、同类选型对比
7.1 对比表
对比对象选取 Ant 核心压缩任务、Maven antrun + 系统 tar 管道(tar-pipeline 路线)与直接编程调用 Commons Compress;数据查询日期 2026-10-18。
| 维度 | Compress Ant Library 1.5 | Ant 核心 zip/tar/gzip 任务(Ant 1.10.18) | maven-antrun-plugin 3.2.0 + 系统 tar 管道 | Commons Compress 1.28.0(编程式) |
|---|---|---|---|---|
| 许可证 | Apache-2.0 | Apache-2.0 | Apache-2.0(插件) | Apache-2.0 |
| 形态 | Antlib 任务/资源 | Ant 内置任务 | Maven 插件内嵌 Ant/Exec + OS tar 命令 | Java 库 |
| 格式覆盖 | 10 压缩 + 7 归档(只读项见前文) | zip/tar/gzip/bzip2 等 4 类 | 取决于系统 tar(多数 tar/xz/gz/zip) | 覆盖最全且持续新增 |
| Zip64/PAX | 完整支持 | zip 受限/不支持 PAX 全量能力 | 由系统 tar 决定 | 支持 |
| 社区活跃度 | 7 stars;最后发版 2017-06-13;推送 2026-07-19 | 随 Ant 维护(1.10.18,Maven Central 2026-10-18 实查) | 36 stars;推送 2026-10-04 | Commons 主线活跃,1.28.0 持续迭代 |
| 版本节奏 | 停更(休眠) | 随 Ant 年更 | 跟随 Maven 插件节奏 | 活跃年更 |
| 兼容矩阵 | Java 7+(旧代码基) | Java 8+(Ant 1.10.x) | 跟随 Maven/JDK;依赖 OS tar | Java 8+(1.28.x) |
(stars 与推送时间来源:GitHub API / shields.io;版本来源:Maven Central 各构件 metadata,均为 2026-10-18 实查)
7.2 选型建议
一句话选型:构建脚本需要 Zip64/PAX 或 7z/cpio/ar/xz 等扩展格式且坚持纯 Ant 声明,选 Compress Antlib(接受休眠现状);只打普通 zip/tar 用 Ant 核心任务即可;Maven 项目优先 antrun+系统 tar 或直接在代码里用 Commons Compress;任何新开发的 Java 应用内压缩逻辑一律选 Commons Compress 本体(1.28.0)而非本 Antlib。
八、参考链接
- Antlib 主页(格式清单/版本公告):https://ant.apache.org/antlibs/compress/index.html
- 任务手册:https://ant.apache.org/antlibs/compress/tasks.html
- 下载页:https://ant.apache.org/antlibs/bindownload.cgi
- Maven Central 构件:https://repo1.maven.org/maven2/org/apache/ant/ant-compress/
- Apache Commons Compress:https://commons.apache.org/proper/commons-compress/
- GitHub 只读副本:https://github.com/apache/ant-antlibs-compress
- maven-antrun-plugin:https://maven.apache.org/plugins/maven-antrun-plugin/