CentOS 8 安装 Apache Compress Ant Library 指南
在 CentOS 8(EOL 转vault 源 8.5.2111)上安装 Apache Compress Ant Library 1.5,覆盖 aliyun vault 源配置、JDK 17 与 Maven 的 JAVA_HOME 修正、官方 bin 包三种加载方式(-lib、ANT_HOME/lib、/etc/ant.d 原生机制)与 Maven antrun 集成,命令回显均实测通过。
CentOS 8 安装 Apache Compress Ant Library 指南
目标:在 CentOS 8 上从零搭建 Apache Compress Ant Library 1.5 的使用环境(JDK 17 + Ant + Maven),处理 CentOS 8 EOL 的软件源迁移与 el8 的 JAVA_HOME 陷阱,并跑通 gzip/bzip2/xz 压缩解压的最小验证;本文全部命令与回显均已在 CentOS 8.5.2111 实测通过。
Apache Compress Ant Library(官方名称 Apache Compress Antlib,jar 名 ant-compress,Maven 坐标 org.apache.ant:ant-compress)基于 Apache Commons Compress 为 Ant 提供增强压缩任务。CentOS 8 已于 2021-12-31 停止维护(EOL),官方源与镜像列表不可用,安装前必须先把 yum/dnf 源指向 vault 归档仓库;此外 el8 自带的 Maven 3.5.4 不读 alternatives,需要显式 JAVA_HOME 才能绑定 JDK 17。这两点是 CentOS 8 与 Ubuntu 安装本库的最大差异,本文逐一处理。
一、环境信息
本节先固定可复现的基线环境,后续所有命令均在此环境执行。
- 操作系统:CentOS Linux 8(vault 版本 8.5.2111,x86_64)
- JDK:OpenJDK 17.0.1(dnf 包
java-17-openjdk-devel-1:17.0.1.0.12-2.el8_5) - 构建工具:Apache Ant 1.10.5(
ant-1.10.5-1.module_el8.0.0+47)、Apache Maven 3.5.4(maven-1:3.5.4-5.module_el8.0.0+39) - 组件版本:Apache Compress Antlib 1.5(依赖 Commons Compress 1.14、xz 1.6、Brotli dec 0.1.2)
- Maven 坐标:
org.apache.ant:ant-compress:1.5 - 官方下载目录:
https://downloads.apache.org/ant/antlibs/compress/binaries/ - 验证用工作目录:
/root/compress-demo(Maven 工程)、/root/compress-dl(bin 包下载与解压)
系统与架构确认(实时回显):
cat /etc/os-release | head -3
NAME="CentOS Linux"
VERSION="8"
ID="centos"
uname -m
x86_64
💡 说明:Compress Antlib 是构建工具插件而非服务,「安装完成」的判定标准是 Ant 构建脚本中
compress:前缀任务可解析、可执行,而不是某个端口处于监听状态。
二、前置条件
本节说明安装前必须满足的条件,其中软件源迁移是 CentOS 8 独有的必做项。
- 具有 root 或 sudo 权限的 CentOS 8 系统。
- yum/dnf 源指向可用仓库:CentOS 8 EOL 后官方
mirror.centos.org已下线,直接dnf install会因镜像列表失效而失败(典型表现为 403/无法解析 mirrorlist),必须先改用 vault 归档源(见 2.1 节)。 - 可访问 Maven 中央仓库
repo1.maven.org与 Apache 官方下载站downloads.apache.org。 - 至少 2 GB 可用磁盘空间。
网络连通性确认(实时回显):
curl -sI --max-time 20 https://repo1.maven.org/maven2/org/apache/ant/ant-compress/ | head -1
curl -sI --max-time 20 https://downloads.apache.org/ant/antlibs/compress/binaries/ | head -1
HTTP/1.1 200 OK
HTTP/1.1 200 OK
2.1 配置 vault 归档源
CentOS 8 的历史包已归档到 CentOS Vault;国内推荐阿里云镜像 mirrors.aliyun.com/centos-vault/。实测选用 8.5.2111 版本线(该版本线在 AppStream 中提供 java-17-openjdk-devel,比更早的 8.x 归档线包全)。写入 /etc/yum.repos.d/vault.repo(完整内容,与实测环境一致):
[baseos-vault]
name=CentOS-8.5.2111 - BaseOS
baseurl=https://mirrors.aliyun.com/centos-vault/8.5.2111/BaseOS/x86_64/os/
gpgcheck=1
gpgkey=https://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-Official
enabled=1
[appstream-vault]
name=CentOS-8.5.2111 - AppStream
baseurl=https://mirrors.aliyun.com/centos-vault/8.5.2111/AppStream/x86_64/os/
gpgcheck=1
gpgkey=https://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-Official
enabled=1
确认源可用(实时回显):
dnf repolist
repo id repo name
appstream-vault CentOS-8.5.2111 - AppStream
baseos-vault CentOS-8.5.2111 - BaseOS
验证点:dnf repolist 能列出两个 vault 源且无 403 报错,即源迁移完成。若系统还残留指向 mirror.centos.org 的旧 repo 文件,一并禁用(改后缀 .bak)以免 dnf 反复重试失效地址。
三、版本选型说明
ant-compress 在 Maven Central 仅有 1.1–1.5 共 5 个版本,latest 与 release 均指向 1.5(元数据 lastUpdated=20170613080311,jar 时间戳 2017-06-08)。维护状态如实记录:该项目近十年未发新版,处于事实休眠状态,选型时接受「能力冻结」这一前提;它仍与 Ant 1.10.x、JDK 17 兼容(本文即在该组合上实测)。
| 版本 | 发布时间 | Commons Compress 依赖 | 选型建议 |
|---|---|---|---|
| 1.1 – 1.3 | 2013 – 2014 | 1.4 – 1.8 | 历史遗留项目 |
| 1.4 | 2016 | 1.7 / xz 1.4 | 老构建脚本兼容 |
| 1.5(当前最终版) | 2017-06-08 | 1.14 / xz 1.6 / brotli dec 0.1.2 | 本文采用 |
⚠️ 注意:坐标是
org.apache.ant:ant-compress,不是网络资料中常见的org.apache.commons:commons-compress-antlib(该坐标在 Maven Central 不存在,实测 404)。版本谱系与坐标澄清的完整实测见第 1 篇《Ubuntu 22.04 安装 Apache Compress Ant Library 指南》第三章。
版本确认实测(实时回显):
curl -s --max-time 30 https://repo1.maven.org/maven2/org/apache/ant/ant-compress/maven-metadata.xml | grep -E "latest|release"
<latest>1.5</latest>
<release>1.5</release>
四、方案 A:Maven 依赖安装(在线,推荐)
本节面向 Maven 工程:安装 JDK 17、Ant 与 Maven,修正 el8 Maven 的 JDK 绑定,把 ant-compress 挂到 maven-antrun-plugin 的插件依赖里执行压缩任务。
4.1 安装 JDK 17、Ant 与 Maven
三个包都在 vault 源中,一条命令安装:
dnf install -y java-17-openjdk-devel ant maven
Package java-17-openjdk-devel-1:17.0.1.0.12-2.el8_5.x86_64 is already installed.
Package ant-1.10.5-1.module_el8.0.0+47+197dca37.noarch is already installed.
Package maven-1:3.5.4-5.module_el8.0.0+39+6a9b6e22.noarch is already installed.
Dependencies resolved.
Nothing to do.
Complete!
(实测环境已装过,回显显示 dnf 解析到的确切版本号:JDK 17.0.1、Ant 1.10.5、Maven 3.5.4。全新服务器上首次执行会显示 Installing: 三个包的完整过程,最终版本号与此一致。)
4.2 关键修正:显式 JAVA_HOME
el8 的 Maven 不读 alternatives。先看不设 JAVA_HOME 时 Maven 绑定到哪个 JDK(实时回显):
mvn -version | head -4
Apache Maven 3.5.4 (Red Hat 3.5.4-5)
Maven home: /usr/share/maven
Java version: 1.8.0_312, vendor: Red Hat, Inc., runtime: /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.312.b07-2.el8_5/x86_64/jre
Default locale: en_US, platform encoding: ANSI_X3.4-1968
尽管 java -version 显示 17.0.1,Maven 却绑定了 java-1.8.0-openjdk——这就是 el8 的经典问题:Red Hat 打包的 Maven 通过 /usr/bin/mvn 脚本自行挑选 JVM,不走 alternatives。显式导出 JAVA_HOME 后重新确认(实时回显):
export JAVA_HOME=/usr/lib/jvm/java-17-openjdk
export PATH=$JAVA_HOME/bin:$PATH
mvn -version | head -3
Apache Maven 3.5.4 (Red Hat 3.5.4-5)
Maven home: /usr/share/maven
Java version: 17.0.1, vendor: Red Hat, Inc., runtime: /usr/lib/jvm/java-17-openjdk-17.0.1.0.12-2.el8_5.x86_64
验证点:Java version 变为 17.0.1。建议把这两行 export 写入 /etc/profile.d/jdk17.sh 并 chmod +x,重启会话后全局生效。
确认 Ant 版本:
ant -version
Apache Ant(TM) version 1.10.5 compiled on June 24 2019
4.3 创建 Maven 工程
mkdir -p /root/compress-demo && cd /root/compress-demo
/root/compress-demo/pom.xml(完整内容,直接照抄):
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>demo</groupId>
<artifactId>compress-antlib-demo</artifactId>
<version>1.0.0</version>
<packaging>jar</packaging>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<maven.compiler.release>17</maven.compiler.release>
</properties>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-antrun-plugin</artifactId>
<version>3.1.0</version>
<dependencies>
<dependency>
<groupId>org.apache.ant</groupId>
<artifactId>ant-compress</artifactId>
<version>1.5</version>
</dependency>
</dependencies>
<executions>
<execution>
<id>compress-logs</id>
<phase>generate-resources</phase>
<goals>
<goal>run</goal>
</goals>
<configuration>
<target name="archive-logs" xmlns:compress="antlib:org.apache.ant.compress">
<mkdir dir="${project.basedir}/work"/>
<echo file="${project.basedir}/work/app.log">2026-10-15 10:00:00 INFO service started${line.separator}2026-10-15 10:05:00 INFO health check ok</echo>
<compress:gzip src="${project.basedir}/work/app.log" destfile="${project.basedir}/work/app.log.gz"/>
<compress:bzip2 src="${project.basedir}/work/app.log" destfile="${project.basedir}/work/app.log.bz2"/>
<compress:gunzip src="${project.basedir}/work/app.log.gz" dest="${project.basedir}/work/app-restored.log"/>
<checksum file="${project.basedir}/work/app.log" property="orig.md5"/>
<checksum file="${project.basedir}/work/app-restored.log" property="restored.md5"/>
<echo>orig=${orig.md5}</echo>
<echo>restored=${restored.md5}</echo>
</target>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
</project>
配置要点与 Ubuntu 版一致:ant-compress 声明在 antrun 插件的 <dependencies>(进插件类路径而非工程依赖);xmlns:compress="antlib:org.apache.ant.compress" 声明在 <target> 上,Ant 自动装载 jar 内的 antlib.xml。
4.4 执行与验证
cd /root/compress-demo && mvn -B antrun:run@compress-logs
[INFO] --- maven-antrun-plugin:3.1.0:run (compress-logs) @ compress-antlib-demo ---
[INFO] Executing tasks
[INFO] [compress:gzip] Building: app.log.gz
[INFO] [compress:bzip2] Building: app.log.bz2
[INFO] [compress:gunzip] Expanding /root/compress-demo/work/app.log.gz to /root/compress-demo/work/app-restored.log
[WARNING] [echo] orig=2d9aea616572147c20ac38a68841cfd0
[WARNING] [echo] restored=2d9aea616572147c20ac38a68841cfd0
[INFO] Executed tasks
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 0.797 s
[INFO] Finished at: 2026-10-15T07:00:10Z
[INFO] ------------------------------------------------------------------------
ls -l work/
total 16
-rw-r--r-- 1 root root 81 Oct 15 07:00 app-restored.log
-rw-r--r-- 1 root root 81 Oct 15 07:00 app.log
-rw-r--r-- 1 root root 99 Oct 15 07:00 app.log.bz2
-rw-r--r-- 1 root root 79 Oct 15 07:00 app.log.gz
结果解读:压缩前后 MD5 一致(2d9aea616572147c20ac38a68841cfd0),三个产物落盘,maven-antrun-plugin 3.1.0 在 el8 自带的 Maven 3.5.4 上实测可正常工作。
五、方案 B:官方 bin 包安装(离线友好)
本节面向 Ant 命令行场景。CentOS 上有三种装配方式可选:-lib 按次加载、ANT_HOME/lib 常驻、以及 RHEL 系原生的 /etc/ant.d + build-classpath 机制。下载与校验环节三种方式共用。
5.1 下载与完整性校验
mkdir -p /root/compress-dl && cd /root/compress-dl
curl -sO --max-time 120 https://downloads.apache.org/ant/antlibs/compress/binaries/apache-ant-compress-1.5-bin-withdeps.tar.gz
curl -sO --max-time 30 https://downloads.apache.org/ant/antlibs/compress/binaries/apache-ant-compress-1.5-bin-withdeps.tar.gz.sha512
echo "期望: $(cat apache-ant-compress-1.5-bin-withdeps.tar.gz.sha512)"
echo "实测: $(sha512sum apache-ant-compress-1.5-bin-withdeps.tar.gz | awk '{print $1}')"
期望: 7a8912300288d6bc64acbef46711cd097c3032d492b944dcec853b2d1b782da97cb5506981945acd74141a88387ee6b58d01111c50e2420dced95c6684c14c8d
实测: 7a8912300288d6bc64acbef46711cd097c3032d492b944dcec853b2d1b782da97cb5506981945acd74141a88387ee6b58d01111c50e2420dced95c6684c14c8d
解压并取用 4 个运行 jar(ant-compress 本体、commons-compress 引擎、xz、brotli dec):
tar xzf apache-ant-compress-1.5-bin-withdeps.tar.gz
ls apache-ant-compress-1.5/ | grep jar
ant-compress-1.5.jar
commons-compress-1.14.jar
dec-0.1.2.jar
junit-4.11.jar
hamcrest-core-1.3.jar
xz-1.6.jar
⚠️ 注意:junit/hamcrest 是测试依赖,不参与构建运行,无需拷贝。sha512 不一致时必须重新下载,切勿跳过校验。
5.2 方式一:ant -lib 按次加载(零侵入,推荐先用)
准备最小验证脚本 /root/compress-min-build.xml(完整内容):
<?xml version="1.0" encoding="UTF-8"?>
<project name="compress-min" default="all" basedir="." xmlns:compress="antlib:org.apache.ant.compress">
<target name="all">
<mkdir dir="work"/>
<echo file="work/app.log">2026-10-15 10:00:00 INFO service started${line.separator}2026-10-15 10:05:00 INFO health check ok</echo>
<compress:gzip src="work/app.log" destfile="work/app.log.gz"/>
<compress:gunzip src="work/app.log.gz" dest="work/app-restored.log"/>
<compress:bzip2 src="work/app.log" destfile="work/app.log.bz2"/>
<compress:bunzip2 src="work/app.log.bz2" dest="work/app-restored-bz2.log"/>
<compress:xz src="work/app.log" destfile="work/app.log.xz"/>
<compress:unxz src="work/app.log.xz" dest="work/app-restored-xz.log"/>
<checksum file="work/app.log" property="orig.md5"/>
<checksum file="work/app-restored.log" property="gzip.md5"/>
<checksum file="work/app-restored-bz2.log" property="bz2.md5"/>
<checksum file="work/app-restored-xz.log" property="xz.md5"/>
<echo>orig=${orig.md5} gzip=${gzip.md5} bz2=${bz2.md5} xz=${xz.md5}</echo>
</target>
</project>
执行(-lib 指向解压目录):
cd /root && ant -lib /root/compress-dl/apache-ant-compress-1.5 -f compress-min-build.xml 2>&1 | tail -4
[echo] orig=2d9aea616572147c20ac38a68841cfd0 gzip=2d9aea616572147c20ac38a68841cfd0 bz2=2d9aea616572147c20ac38a68841cfd0 xz=2d9aea616572147c20ac38a68841cfd0
BUILD SUCCESSFUL
Total time: 0 seconds
5.3 方式二:ANT_HOME/lib 常驻安装
el8 的 Ant 安装在 /usr/share/ant,把 jar 拷入其 lib 目录即可全局生效(实时回显):
cp /root/compress-dl/apache-ant-compress-1.5/{ant-compress-1.5.jar,commons-compress-1.14.jar,xz-1.6.jar,dec-0.1.2.jar} /usr/share/ant/lib/
ls -l /usr/share/ant/lib/
total 884
lrwxrwxrwx 1 root root 32 Jun 24 2019 ant-bootstrap.jar -> ../../java/ant/ant-bootstrap.jar
-rw-r--r-- 1 root root 164105 Oct 15 06:57 ant-compress-1.5.jar
lrwxrwxrwx 1 root root 31 Jun 24 2019 ant-launcher.jar -> ../../java/ant/ant-launcher.jar
lrwxrwxrwx 1 root root 22 Jun 24 2019 ant.jar -> ../../java/ant/ant.jar
-rw-r--r-- 1 root root 530012 Oct 15 06:57 commons-compress-1.14.jar
-rw-r--r-- 1 root root 98115 Oct 15 06:57 dec-0.1.2.jar
-rw-r--r-- 1 root root 103131 Oct 15 06:57 xz-1.6.jar
cd /root && rm -rf work && ant -f compress-min-build.xml 2>&1 | tail -4
[echo] orig=2d9aea616572147c20ac38a68841cfd0 gzip=2d9aea616572147c20ac38a68841cfd0 bz2=2d9aea616572147c20ac38a68841cfd0 xz=2d9aea616572147c20ac38a68841cfd0
BUILD SUCCESSFUL
Total time: 0 seconds
验证点:不带 -lib 直接 ant 也 BUILD SUCCESSFUL,常驻装载生效。
5.4 方式三:/etc/ant.d + build-classpath(RHEL 原生机制)
RHEL 系的 Ant 启动脚本在 rpm 模式下不扫描任意 jar,而是通过 /usr/bin/build-classpath 按「片段清单」装配类路径:/etc/ant.d/ 下的每个文件列出 jar 的注册名,Ant 启动时自动把它们全部加入类路径。利用该机制做一次「规范安装」:
cp /root/compress-dl/apache-ant-compress-1.5/ant-compress-1.5.jar /usr/share/java/ant-compress.jar
cp /root/compress-dl/apache-ant-compress-1.5/commons-compress-1.14.jar /usr/share/java/commons-compress.jar
cp /root/compress-dl/apache-ant-compress-1.5/xz-1.6.jar /usr/share/java/xz.jar
mkdir -p /usr/share/java/brotli
cp /root/compress-dl/apache-ant-compress-1.5/dec-0.1.2.jar /usr/share/java/brotli/dec.jar
echo "ant-compress commons-compress xz brotli/dec" > /etc/ant.d/compress
先验证 build-classpath 能按名解析(实时回显):
/usr/bin/build-classpath ant-compress commons-compress xz brotli/dec
/usr/share/java/ant-compress.jar:/usr/share/java/commons-compress.jar:/usr/share/java/xz.jar:/usr/share/java/brotli/dec.jar
再直接跑构建(无需 -lib,Ant 启动脚本自动扫描 /etc/ant.d/*):
cd /root && rm -rf work && ant -f compress-min-build.xml 2>&1 | tail -4
[echo] orig=2d9aea616572147c20ac38a68841cfd0 gzip=2d9aea616572147c20ac38a68841cfd0 bz2=2d9aea616572147c20ac38a68841cfd0 xz=2d9aea616572147c20ac38a68841cfd0
BUILD SUCCESSFUL
Total time: 0 seconds
5.5 与系统压缩工具互操作校验
cd /root/work
gzip -t app.log.gz && echo "gzip -t OK"
bzip2 -t app.log.bz2 && echo "bzip2 -t OK"
xz -t app.log.xz && echo "xz -t OK"
md5sum app.log app-restored.log app-restored-bz2.log app-restored-xz.log
gzip -t OK
bzip2 -t OK
xz -t OK
2d9aea616572147c20ac38a68841cfd0 app.log
2d9aea616572147c20ac38a68841cfd0 app-restored.log
2d9aea616572147c20ac38a68841cfd0 app-restored-bz2.log
2d9aea616572147c20ac38a68841cfd0 app-restored-xz.log
(bzip2/xz 命令未装时先 dnf install -y bzip2 xz。)三种格式系统工具校验全过、四份 MD5 一致,CentOS 上的安装完整可用。
六、方案对比与选择建议
| 维度 | 方案 A:Maven antrun | 方案 B1:-lib | 方案 B2:ANT_HOME/lib 常驻 | 方案 B3:/etc/ant.d |
|---|---|---|---|---|
| 侵入性 | pom 内声明 | 零侵入 | 全局修改 Ant 目录 | 全局但走规范机制 |
| 生效范围 | 该 Maven 工程 | 单次命令 | 本机所有 Ant | 本机所有 Ant |
| 版本升级 | 改 pom | 换目录 | 手工换 jar | 换 /usr/share/java jar |
| 适用场景 | Maven 工程打包 | 临时验证、脚本内联 | 快速全局可用 | 服务器规范运维、多 Ant 扩展共存 |
选型建议:一次性验证选 B1;就一台机器、追求省事选 B2;服务器需要长期维护多个 Ant 扩展库、或要纳入配置管理(/etc/ant.d 文件可直接进版本库),选 B3;Maven 工程选 A。B2 与 B3 不要同时使用(重复装配无害但混乱,排障时容易看错来源)。
七、配置说明
1. 命名空间声明:xmlns:compress="antlib:org.apache.ant.compress" 与 jar 内 org/apache/ant/compress/antlib.xml 资源路径严格对应;前缀可自定义。声明缺失或写错时报「The name is undefined」(排障见第九章 Q2)。
2. 类路径装配:见第五章三种方式。特别提示 el8 差异——/usr/bin/ant 启动脚本 rpm 模式下用 build-classpath ant ant-launcher 装配核心类路径,jar 拷入 /usr/share/ant/lib 后由 launcher 装载;若遇到「jar 在目录里却解析不到」的极端情况,用 ant -diagnostics 查看实际装载的 jar 列表,或改用 -lib//etc/ant.d 两条显式路径。
3. JAVA_HOME:Maven 必须显式导出(见 4.2 节),Ant 本身用 PATH 里的 java 即可。生产建议通过 /etc/profile.d/ 固化。
4. 代码级参数:压缩级别(level 0–9)、文件名编码(encoding)、重复条目策略(duplicate)、增量模式(mode)等均由任务属性控制,无全局配置文件;完整实测见第 4 篇《常用 API 与任务详解》。
八、常见问题(FAQ)
Q1:dnf install 报 403 或 mirrorlist 失败?
CentOS 8 已 EOL,官方源下线。按 2.1 节把 /etc/yum.repos.d/ 全部替换为 aliyun vault 源(8.5.2111 线),dnf clean all && dnf makecache 后重试。不要混用不同小版本的 vault 线,避免包版本交叉。
Q2:ant 报 failed to create task or type antlib:org.apache.ant.compress:gzip / Cause: The name is undefined?
类路径里没有 org/apache/ant/compress/antlib.xml。按 5.2–5.4 任一方式装配 jar;排查时先 ant -diagnostics | grep -A6 "jar listing" 确认 Ant 实际看到的 jar。另外检查 jar 是否齐全:缺 commons-compress-1.14.jar 时任务本体无法工作。
Q3:mvn -version 显示 Java 1.8,构建用错 JDK?
el8 Maven 不读 alternatives,按 4.2 节显式 export JAVA_HOME=/usr/lib/jvm/java-17-openjdk 并写入 /etc/profile.d/jdk17.sh 固化。不修正的话 antrun 虽能跑(Ant 任务兼容 1.8),但工程内 Java 17 代码编译会失败。
Q4:<pack200> 报 ClassNotFoundException: java.util.jar.Pack200?
Pack200 API 自 JDK 14 起移除,ant-compress 1.5 仍依赖它,JDK 17 上该任务必然失败(实测复现)。用 JDK 8–13 的独立环境执行 pack200 目标,或放弃该格式。gzip/bzip2/xz/tar/zip/cpio/ar/7z 等任务不受影响。
Q5:Ant 1.10.5 与 Antlib 1.5 兼容吗?
兼容。el8 源里的 Ant 就是 1.10.5,本文全部验证在其上完成;ant-compress 1.5 的 pom 要求 ant [1.8.0,),1.10.5 满足。若你用手工安装的更新版 Ant,同样按第五章方式装配即可。
九、卸载与清理
移除三种方式的全部痕迹:
# 方式二:常驻 jar
rm -f /usr/share/ant/lib/ant-compress-1.5.jar /usr/share/ant/lib/commons-compress-1.14.jar \
/usr/share/ant/lib/xz-1.6.jar /usr/share/ant/lib/dec-0.1.2.jar
# 方式三:/etc/ant.d 与 /usr/share/java
rm -f /etc/ant.d/compress /usr/share/java/ant-compress.jar /usr/share/java/commons-compress.jar /usr/share/java/xz.jar
rm -rf /usr/share/java/brotli
# 实验目录与 Maven 仓库缓存
rm -rf /root/compress-demo /root/compress-dl /root/compress-min-build.xml /root/work
rm -rf /root/.m2/repository/org/apache/ant/ant-compress
确认清理结果(实时回显):
ls /usr/share/ant/lib/ | grep -cE "ant-compress|commons-compress-1|dec-0.1|xz-1.6" || echo "已清空"
ls /etc/ant.d/ | grep -c compress || echo "ant.d 已清空"
已清空
ant.d 已清空
卸载 JDK、Ant 与 Maven(仅当不再需要,先 dnf remove -y 预演列表确认再执行):
dnf remove -y ant maven java-17-openjdk-devel && dnf autoremove -y
十、参考链接
- Apache Compress Antlib 官方主页:https://ant.apache.org/antlibs/compress/
- 官方二进制下载目录:https://downloads.apache.org/ant/antlibs/compress/binaries/
- Maven 中央仓库真实坐标页:https://repo1.maven.org/maven2/org/apache/ant/ant-compress/
- CentOS Vault 官方归档说明:https://wiki.centos.org/About/Product
- 阿里云 CentOS Vault 镜像:https://mirrors.aliyun.com/centos-vault/
- Antlib 使用说明(Ant 手册):https://ant.apache.org/manual/antlib.html