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 集成,命令回显均实测通过。

Apache Compress Ant LibraryApache Compress Ant Library2026/10/15

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 独有的必做项。

  1. 具有 root 或 sudo 权限的 CentOS 8 系统。
  2. yum/dnf 源指向可用仓库:CentOS 8 EOL 后官方 mirror.centos.org 已下线,直接 dnf install 会因镜像列表失效而失败(典型表现为 403/无法解析 mirrorlist),必须先改用 vault 归档源(见 2.1 节)。
  3. 可访问 Maven 中央仓库 repo1.maven.org 与 Apache 官方下载站 downloads.apache.org。
  4. 至少 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.32013 – 20141.4 – 1.8历史遗留项目
1.420161.7 / xz 1.4老构建脚本兼容
1.5(当前最终版)2017-06-081.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

十、参考链接

  1. Apache Compress Antlib 官方主页:https://ant.apache.org/antlibs/compress/
  2. 官方二进制下载目录:https://downloads.apache.org/ant/antlibs/compress/binaries/
  3. Maven 中央仓库真实坐标页:https://repo1.maven.org/maven2/org/apache/ant/ant-compress/
  4. CentOS Vault 官方归档说明:https://wiki.centos.org/About/Product
  5. 阿里云 CentOS Vault 镜像:https://mirrors.aliyun.com/centos-vault/
  6. Antlib 使用说明(Ant 手册):https://ant.apache.org/manual/antlib.html