CentOS 8 安装 Apache Props Ant Library 指南
在 CentOS 8 上修复 EOL 软件源并安装验证 Apache Props Ant Library(ant-props 1.0.0)的完整指南,含 JAVA_HOME 显式配置等 el8 实测避坑要点。
CentOS 8 安装 Apache Props Ant Library 指南
目标:在 CentOS 8 上修复已停止维护的软件源,安装 JDK 17、Ant 与 Maven,并完成 Apache Props Ant Library(构件
org.apache.ant:ant-props:1.0.0)的安装与运行验证(实测通过)。
一、环境信息
本文所有命令与回显均在以下环境实测采集:
| 项目 | 值 |
|---|---|
| 操作系统 | CentOS Linux 8(x86_64),软件源已切换到阿里云归档 mirrors.aliyun.com/centos-vault/8.5.2111 |
| JDK | java-17-openjdk-devel 17.0.1.0.12(el8_5);另有 ant 依赖带入的 java-1.8.0-openjdk 1.8.0_312 |
| Ant | Apache Ant 1.10.5(el8 AppStream,模块化打包) |
| Maven | Apache Maven 3.5.4(el8 AppStream) |
| Props Ant Library | org.apache.ant:ant-props:1.0.0(jar 33260 字节,SHA-1 da89e11da0ab59ce1b1ea5e79a220f98a73c5792) |
| 实验目录 | /opt/props-antlib(构件仓库)、/root/props-demo(独立 Ant 工程)、/root/props-maven-demo(Maven 工程) |
CentOS 8 已于 2021 年底停止维护,镜像源 mirror.centos.org 与 vault.centos.org 对部分请求返回 403,这是本文环境的第一道坎,第二节用阿里云归档源解决。ant-props 版本谱系实测查询如下:
$ curl -s --max-time 30 https://repo1.maven.org/maven2/org/apache/ant/ant-props/maven-metadata.xml
<?xml version="1.0" encoding="UTF-8"?>
<metadata>
<groupId>org.apache.ant</groupId>
<artifactId>ant-props</artifactId>
<versioning>
<latest>1.0.0</latest>
<release>1.0.0</release>
<versions>
<version>1.0.0</version>
</versions>
<lastUpdated>20260627124331</lastUpdated>
</versioning>
</metadata>
唯一版本 1.0.0,运行时要求 Ant 1.8.0 及以上。
二、前置条件
- 具备 root 权限,dnf 可用。
- 可访问 mirrors.aliyun.com 与 repo1.maven.org。
- 软件源可用性验证:CentOS 8 的官方源已失效,先按 2.1 切换归档源,再验证。
2.1 切换阿里云归档源
CentOS 8 的仓库配置使用 mirrorlist 指向已下线的 mirror.centos.org,实测直接 dnf 会得到仓库元数据下载失败。切换到阿里云的 centos-vault 归档,并锁定 8.5.2111(这是 el8 中开始提供 java-17-openjdk 包的版本):
$ sed -i -e 's|mirrorlist=|#mirrorlist=|' -e 's|#baseurl=http://mirror.centos.org|baseurl=https://mirrors.aliyun.com/centos-vault|' /etc/yum.repos.d/CentOS-Linux-*.repo
$ sed -i 's|$releasever/|8.5.2111/|g' /etc/yum.repos.d/CentOS-Linux-BaseOS.repo /etc/yum.repos.d/CentOS-Linux-AppStream.repo /etc/yum.repos.d/CentOS-Linux-Extras.repo
$ grep -m2 baseurl /etc/yum.repos.d/CentOS-Linux-AppStream.repo
baseurl=https://mirrors.aliyun.com/centos-vault/$contentdir/8.5.2111/AppStream/$basearch/os/
#baseurl=http://mirror.centos.org/$contentdir/$releasever/AppStream/$basearch/os/
说明:$contentdir 在 el8 的 /etc/dnf/vars/ 中已定义为 centos,无需改动;$releasever 在 el8 解析为 8,归档目录没有该层级,必须显式替换为 8.5.2111。重建缓存验证:
$ dnf makecache
CentOS Linux 8 - AppStream 1.2 MB/s | 4.3 kB 00:00
CentOS Linux 8 - BaseOS 987 kB/s | 3.9 kB 00:00
CentOS Linux 8 - Extras 1.0 MB/s | 3.0 kB 00:00
Metadata cache created.
三仓库元数据全部可读,源修复完成。
💡 技术拓展:CentOS 8 各归档可用的常见目录对比:
| 归档路径 | 内容 | 备注 |
|---|---|---|
| mirrors.aliyun.com/centos-vault/8.5.2111/ | 8.5.2111 全量仓库 | 含 java-17-openjdk,本文采用 |
| mirrors.aliyun.com/centos-vault/8.4.2105/ | 8.4.2101 全量仓库 | 无 java-17 包 |
| vault.centos.org/8.5.2111/ | 官方归档 | 实测部分请求 403,不稳定 |
本文统一使用阿里云归档的 8.5.2111。
三、版本选型说明
3.1 Ant 版本
💡 技术拓展:el8 下 Ant 有两种来源,实测行为有关键差异:
| 来源 | 版本 | antlib 自动发现(xmlns 声明 + jar 在 lib) | 备注 |
|---|---|---|---|
| dnf(AppStream 模块) | 1.10.5 | 实测不支持 | jar 必须用 typedef 显式装载,见 5.2 |
| Apache 官方二进制包 | 1.10.18 | 实测支持(在 Ubuntu 侧同版本验证) | 需自解压维护 |
本文主用 dnf 渠道的 1.10.5(版本较旧但功能面一致,五个委托器全部实测可用),所有构建文件统一采用 typedef 显式装载方式,规避 1.10.5 的自动发现缺失,两种来源都能跑。若坚持自动发现特性,改用官方 1.10.18 二进制包。
3.2 JDK 版本
dnf 安装 ant 时会连带安装 java-1.8.0-openjdk 并把系统默认 java 指向 1.8(实测第一节环境信息中两个 JDK 并存)。el8 从 8.5.2111 起提供 java-17-openjdk 包。本文以 17.0.1 为开发主 JDK,通过显式 JAVA_HOME 使用(见 5.1),并实测 JDK 8 下 ant-props 同样可用。
3.3 ant-props 版本
唯一版本 1.0.0,与 Ant 1.10.5 兼容实测通过。
四、方案 A:Maven 依赖安装
4.1 安装基础组件
$ dnf install -y java-17-openjdk-devel ant maven curl
安装后确认版本。注意两点实测事实:ant -version 正常输出;java -version 显示 1.8.0_312(ant 的依赖把 1.8 设为了默认);mvn -version 在未显式 JAVA_HOME 时同样绑定 1.8:
$ ant -version
Apache Ant(TM) version 1.10.5 compiled on June 24 2019
$ java -version
openjdk version "1.8.0_312"
OpenJDK Runtime Environment (build 1.8.0_312-b07)
OpenJDK 64-Bit Server VM (build 25.312-b07, mixed mode)
$ mvn -version
Apache Maven 3.5.4 (Red Hat 3.5.4-5)
Maven home: /usr/share/maven
Java version: 1.8.0_312, vendor: Oracle Corporation, 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
OS name: "linux", version: "4.18.0-553.el8_10.x86_64", arch: "amd64", family: "unix"
这就是 el8 的第一个坑:Maven 不读取 alternatives 的默认 JVM,1.8 会静默接管构建。显式导出 JAVA_HOME 后复查:
$ export JAVA_HOME=/usr/lib/jvm/java-17-openjdk
$ export PATH=$JAVA_HOME/bin:$PATH
$ java -version
openjdk version "17.0.1" 2021-10-19 LTS
OpenJDK Runtime Environment 18.9 (build 17.0.1+12-LTS-166)
OpenJDK 64-Bit Server VM 18.9 (build 17.0.1+12-LTS-166, mixed mode, sharing)
$ mvn -version
Apache Maven 3.5.4 (Red Hat 3.5.4-5)
Maven home: /usr/share/maven
Java version: 17.0.1, vendor: Oracle Corporation, runtime: /usr/lib/jvm/java-17-openjdk-17.0.1.0.12-2.el8_5.x86_64
Default locale: en_US, platform encoding: UTF-8
OS name: "linux", version: "4.18.0-553.el8_10.x86_64", arch: "amd64", family: "unix"
JAVA_HOME 生效后 Maven 与 java 均绑定 17.0.1,同时 platform encoding 从 ANSI_X3.4-1968 恢复为 UTF-8。
4.2 创建工程与 pom.xml
$ mkdir -p /root/props-maven-demo
$ cd /root/props-maven-demo
$ vim pom.xml
pom.xml 完整内容(与《Ubuntu 22.04 安装 Apache Props Ant Library 指南》4.2 一致,此处全文给出保证自含):
<?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>props-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>
<dependencies>
<dependency>
<groupId>org.apache.ant</groupId>
<artifactId>ant</artifactId>
<version>1.10.18</version>
</dependency>
<dependency>
<groupId>org.apache.ant</groupId>
<artifactId>ant-props</artifactId>
<version>1.0.0</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.11.0</version>
</plugin>
<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</artifactId>
<version>1.10.18</version>
</dependency>
<dependency>
<groupId>org.apache.ant</groupId>
<artifactId>ant-props</artifactId>
<version>1.0.0</version>
</dependency>
</dependencies>
<executions>
<execution>
<id>props-quickstart</id>
<phase>validate</phase>
<goals>
<goal>run</goal>
</goals>
<configuration>
<target xmlns:props="antlib:org.apache.ant.props" name="props-quickstart">
<typedef resource="org/apache/ant/props/antlib.xml" classpathref="maven.plugin.classpath"/>
<propertyhelper>
<props:nested/>
<props:stringops/>
</propertyhelper>
<property name="app.env" value="prod"/>
<property name="db.user.prod" value="app_rw"/>
<property name="db.pwd.prod" value="q1w2e3r4"/>
<property name="x" value="foo/bar/baz.ext"/>
<echo>[1] 嵌套展开 db.user = ${db.user.${app.env}}</echo>
<echo>[2] 嵌套展开 db.pwd = ${db.pwd.${app.env}}</echo>
<echo>[3] 未定义取默认 cache.max = ${cache.max:-512}</echo>
<property name="cache.max" value="1024"/>
<echo>[4] 已定义取原值 cache.max = ${cache.max:-512}</echo>
<echo>[5] 删前缀最短 ${x}#*/ = ${x#*/}</echo>
<echo>[6] 取扩展名 ${x}##*. = ${x##*.}</echo>
<echo>[7] 删扩展名 ${x}%.* = ${x%.*}</echo>
<property name="path.str" value="org/apache/ant/props"/>
<echo>[8] 全部替换斜杠为点 = ${path.str//\//.}</echo>
<echo>props-antlib quickstart OK</echo>
</target>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
</project>
要点:ant 与 ant-props 声明在 maven-antrun-plugin 的 <dependencies> 内进入插件类路径;xmlns:props="antlib:org.apache.ant.props" 声明在 <target> 上;db.pwd.prod 的示例口令统一用 q1w2e3r4。
4.3 构建验证
$ cd /root/props-maven-demo
$ export JAVA_HOME=/usr/lib/jvm/java-17-openjdk
$ export LANG=C.UTF-8
$ MAVEN_OPTS="-Xms256m -Xmx256m" mvn -B validate
实测回显(非首次运行;首次会下载插件与依赖,实测耗时约 24 秒):
[INFO] -----------------------< demo:props-antlib-demo >-----------------------
[INFO] Building props-antlib-demo 1.0.0
[INFO] --------------------------------[ jar ]---------------------------------
[INFO]
[INFO] --- maven-antrun-plugin:3.1.0:run (props-quickstart) @ props-antlib-demo ---
[INFO] Executing tasks
[WARNING] [echo] [1] 嵌套展开 db.user = app_rw
[WARNING] [echo] [2] 嵌套展开 db.pwd = q1w2e3r4
[WARNING] [echo] [3] 未定义取默认 cache.max = 512
[WARNING] [echo] [4] 已定义取原值 cache.max = 1024
[WARNING] [echo] [5] 删前缀最短 foo/bar/baz.ext#*/ = bar/baz.ext
[WARNING] [echo] [6] 取扩展名 foo/bar/baz.ext##*. = ext
[WARNING] [echo] [7] 删扩展名 foo/bar/baz.ext%.* = foo/bar/baz
[WARNING] [echo] [8] 全部替换斜杠为点 = org.apache.ant.props
[WARNING] [echo] props-antlib quickstart OK
[INFO] Executed tasks
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 0.573 s
[INFO] Finished at: 2026-10-15T06:06:00Z
[INFO] ------------------------------------------------------------------------
8 条用例全部按预期展开,Maven 3.5.4 与 antrun 3.1.0 兼容实测无版本门槛。
4.4 要点小结
- el8 的 Maven 3.5.4 必须显式 JAVA_HOME,否则静默使用 1.8 构建(4.1 有前后对照实测)。
- ant-props 放插件依赖而非工程依赖,与 antrun 内嵌 Ant 同类加载器可见,一次成功。
- antrun 3.1.0 的 echo 输出走 WARN 级别,
[WARNING] [echo]是正常现象。
五、方案 B:jar 直用(独立 Ant)
5.1 下载构件并校验
$ mkdir -p /opt/props-antlib /root/props-demo
$ cd /opt/props-antlib
$ curl -s --max-time 120 -O https://repo1.maven.org/maven2/org/apache/ant/ant-props/1.0.0/ant-props-1.0.0.jar
$ curl -s --max-time 60 -O https://repo1.maven.org/maven2/org/apache/ant/ant-props/1.0.0/ant-props-1.0.0.jar.sha1
$ ls -l ant-props-1.0.0.jar
-rw-r--r-- 1 root root 33260 Oct 15 06:05 ant-props-1.0.0.jar
$ echo "期望: $(cat ant-props-1.0.0.jar.sha1)"
期望: da89e11da0ab59ce1b1ea5e79a220f98a73c5792
$ echo "实测: $(sha1sum ant-props-1.0.0.jar | awk '{print $1}')"
实测: da89e11da0ab59ce1b1ea5e79a220f98a73c5792
校验一致。
5.2 typedef 显式装载(el8 推荐方式)
把 jar 与构建文件放同一目录,构建文件用 <typedef uri="antlib:org.apache.ant.props" .../> 显式装载:
$ cp /opt/props-antlib/ant-props-1.0.0.jar /root/props-demo/
$ cd /root/props-demo
$ vim quickstart.xml
quickstart.xml 完整内容:
<?xml version="1.0" encoding="UTF-8"?>
<project name="props-quickstart" default="run" xmlns:props="antlib:org.apache.ant.props">
<typedef uri="antlib:org.apache.ant.props" resource="org/apache/ant/props/antlib.xml" classpath="ant-props-1.0.0.jar"/>
<propertyhelper>
<props:nested/>
<props:stringops/>
</propertyhelper>
<target name="run">
<property name="app.env" value="prod"/>
<property name="db.user.prod" value="app_rw"/>
<property name="db.pwd.prod" value="q1w2e3r4"/>
<property name="x" value="foo/bar/baz.ext"/>
<echo>[1] 嵌套展开 db.user = ${db.user.${app.env}}</echo>
<echo>[2] 嵌套展开 db.pwd = ${db.pwd.${app.env}}</echo>
<echo>[3] 未定义取默认 cache.max = ${cache.max:-512}</echo>
<property name="cache.max" value="1024"/>
<echo>[4] 已定义取原值 cache.max = ${cache.max:-512}</echo>
<echo>[5] 删前缀最短 ${x}#*/ = ${x#*/}</echo>
<echo>[6] 取扩展名 ${x}##*. = ${x##*.}</echo>
<echo>[7] 删扩展名 ${x}%.* = ${x%.*}</echo>
<property name="path.str" value="org/apache/ant/props"/>
<echo>[8] 全部替换斜杠为点 = ${path.str//\//.}</echo>
<echo>props-antlib quickstart OK</echo>
</target>
</project>
用 JDK 17 运行(同时验证 el8 上 Ant 由 JAVA_HOME 驱动 JVM):
$ cd /root/props-demo
$ export JAVA_HOME=/usr/lib/jvm/java-17-openjdk
$ export PATH=$JAVA_HOME/bin:$PATH
$ export LANG=C.UTF-8
$ java -version | head -1
openjdk version "17.0.1" 2021-10-19 LTS
$ ANT_OPTS="-Xms256m -Xmx256m" ant -f quickstart.xml
Buildfile: /root/props-demo/quickstart.xml
run:
[echo] [1] 嵌套展开 db.user = app_rw
[echo] [2] 嵌套展开 db.pwd = q1w2e3r4
[echo] [3] 未定义取默认 cache.max = 512
[echo] [4] 已定义取原值 cache.max = 1024
[echo] [5] 删前缀最短 foo/bar/baz.ext#*/ = bar/baz.ext
[echo] [6] 取扩展名 foo/bar/baz.ext##*. = ext
[echo] [7] 删扩展名 foo/bar/baz.ext%.* = foo/bar/baz
[echo] [8] 全部替换斜杠为点 = org.apache.ant.props
[echo] props-antlib quickstart OK
BUILD SUCCESSFUL
Total time: 0 seconds
5.3 关于 ANT_HOME/lib 自动发现的实测结论
官方手册支持把 jar 放入 ANT_HOME/lib 后仅靠 xmlns 声明自动发现。在 el8 的 ant 1.10.5 上实测该方式不生效:jar 已复制进 /usr/share/ant/lib(ant -diagnostics 可见其在类路径上),但构建文件仍报 propertyhelper doesn't support the nested "nested" element.。ant -lib /usr/share/ant/lib 显式传参同样无效。结论:el8 重打包的 Ant 丢失了 antlib 自动发现能力,方案 B 必须走 5.2 的 typedef 显式装载(jar 与构建文件同目录,或 classpath 写绝对路径 /opt/props-antlib/ant-props-1.0.0.jar)。
5.4 JDK 8 兼容性实测
el8 默认 java 就是 1.8.0_312,直接在默认 JVM 下复跑:
$ cd /root/props-demo
$ export LANG=C.UTF-8
$ unset JAVA_HOME
$ ant -f quickstart.xml | head -8
Buildfile: /root/props-demo/quickstart.xml
run:
[echo] [1] 嵌套展开 db.user = app_rw
[echo] [2] 嵌套展开 db.pwd = q1w2e3r4
[echo] [3] 未定义取默认 cache.max = 512
[echo] [4] 已定义取原值 cache.max = 1024
JDK 8 与 JDK 17 行为一致。生产建议仍按第七节显式声明 JAVA_HOME,避免环境漂移。
六、方案对比
| 维度 | 方案 A:Maven 依赖 | 方案 B:jar 直用 |
|---|---|---|
| 前置软件 | java-17-openjdk-devel + maven | JDK + ant(dnf 或官方包) |
| jar 位置 | ~/.m2 自动管理 | /opt/props-antlib,typedef 指向 |
| el8 特有风险 | Maven 不读 alternatives,必须 JAVA_HOME | antlib 自动发现失效,必须 typedef |
| 版本升级 | 改 pom 版本号 | 换 jar 文件名并改 classpath |
| 本文实测 | mvn 3.5.4 + antrun 3.1.0 通过 | ant 1.10.5 + JDK 17/8 通过 |
el8 上两个方案都必须附加一项显式配置(JAVA_HOME 或 typedef),这是与 Ubuntu 环境最大的差异。
七、基础配置与运行参数
7.1 JAVA_HOME 持久化
el8 下最关键的配置,建议写入 /etc/profile.d/java17.sh:
$ cat > /etc/profile.d/java17.sh <<'EOF'
export JAVA_HOME=/usr/lib/jvm/java-17-openjdk
export PATH=$JAVA_HOME/bin:$PATH
EOF
$ chmod +x /etc/profile.d/java17.sh
$ source /etc/profile.d/java17.sh
之后新登录会话自动获得 17.0.1。验证:mvn -version 的 Java version 行应显示 17.0.1(对照 4.1 的实测输出)。
7.2 JVM 堆参数
Ant 与 Maven 分别通过 ANT_OPTS 与 MAVEN_OPTS 接收 JVM 参数,两份脚本(/usr/bin/ant、/usr/bin/mvn)在启动时读取。按 256 MB 配置并持久化:
$ cat >> /etc/profile.d/java17.sh <<'EOF'
export ANT_OPTS="-Xms256m -Xmx256m"
export MAVEN_OPTS="-Xms256m -Xmx256m"
EOF
$ source /etc/profile.d/java17.sh
本文 5.2 的运行均在 ANT_OPTS="-Xms256m -Xmx256m" 下完成,ant-props 仅做属性求值,内存占用极低。
7.3 中文输出编码
el8 默认 locale 在 SSH 会话中通常已是 en_US.UTF-8,但最小安装或无人值守会话可能是 POSIX。统一在 profile 或命令前导出:
$ export LANG=C.UTF-8
未导出时 echo 中文显示为问号,导出后正常(对比 5.2 回显)。
八、验证清单
三步确认安装完整(任一环境均适用):
$ ant -version
Apache Ant(TM) version 1.10.5 compiled on June 24 2019
$ ant -f /root/props-demo/quickstart.xml | tail -2
[echo] props-antlib quickstart OK
BUILD SUCCESSFUL
$ 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: Oracle Corporation, runtime: /usr/lib/jvm/java-17-openjdk-17.0.1.0.12-2.el8_5.x86_64
三项输出与本文实测一致即安装完成。
九、FAQ
9.1 dnf 报仓库元数据下载失败 / 403
CentOS 8 已 EOL,mirror.centos.org 已下线,vault.centos.org 实测部分请求 403。修复:按 2.1 切换阿里云归档 mirrors.aliyun.com/centos-vault/8.5.2111 后 dnf makecache。
9.2 Maven 构建用了 JDK 1.8 而不是 17
el8 的 Maven 启动脚本不读 alternatives,JAVA_HOME 未设置时会落到 1.8(4.1 实测前后对照:Java version: 1.8.0_312 与 Java version: 17.0.1)。修复:显式 export JAVA_HOME=/usr/lib/jvm/java-17-openjdk 并按 7.1 持久化。
9.3 antlib 自动发现不生效,报 propertyhelper doesn't support the nested "nested" element.
实测 ant 1.10.5(el8 打包)在 jar 已入 /usr/share/ant/lib、甚至 ant -lib 显式传参的情况下都无法自动发现 antlib。两条修复路径:jar 与构建文件同目录加 typedef(5.2 实测通过);或改用 Apache 官方 1.10.18 二进制包(自动发现特性完好)。
9.4 typedef 报 Could not load definitions from resource org/apache/ant/props/antlib.xml. It could not be found.
实测触发条件:classpath 属性写的是相对路径 ant-props-1.0.0.jar,但 jar 不在构建文件 basedir 下。el8 上该 classpath 不会回退到系统类路径查找。修复:把 jar 复制到构建文件同目录,或 classpath 写绝对路径 /opt/props-antlib/ant-props-1.0.0.jar。
9.5 echo 中文乱码
platform encoding: ANSI_X3.4-1968(4.1 未设 JAVA_HOME 时的实测输出)说明 JVM 默认字符集不是 UTF-8。修复:export LANG=C.UTF-8,或按 7.1 持久化(JAVA_HOME=17 后 platform encoding 实测自动恢复 UTF-8)。
9.6 antrun 里 echo 前缀 [WARNING] 是报错吗
不是。antrun 3.1.0 将 Ant 输出路由到 WARN 级别,BUILD SUCCESS 即为通过(回显见 4.3)。
9.7 dnf 的 ant 包版本太旧(1.10.5)怎么办
ant-props 五个委托器在 1.10.5 上实测功能完整,可放心使用。若需要 1.10.18 的新特性,下载官方二进制包解压到 /opt/apache-ant-1.10.18 并 export ANT_HOME=/opt/apache-ant-1.10.18,ANT_HOME 优先级高于系统脚本内默认值,随后按 5.2 同样方式装载 jar。
十、卸载与清理
预览并执行卸载(逐条列出,按需取舍):
$ dnf remove -y ant
Removed:
ant-lib-1.10.5-1.module_el8.0.0+47+197dca37.noarch
$ rpm -q ant
package ant is not installed
$ dnf remove -y maven
$ rm -f /usr/share/ant/lib/ant-props-1.0.0.jar
$ rm -rf /opt/props-antlib /root/props-demo /root/props-maven-demo
实测 rpm -q ant 返回 not installed,el8 的 ant 以 ant-lib 模块形式随卸载移除。卸载实测后重新安装只需重跑 dnf install -y ant 与 5.1 的下载命令。若 JVM 供其他服务使用,保留 java-17-openjdk-devel 包。
十一、参考链接
- Apache Props Ant Library 主页:https://ant.apache.org/antlibs/props/index.html
- 官方手册(语法与用法):https://ant.apache.org/antlibs/props/manual/index.html
- Maven Central 构件:https://repo1.maven.org/maven2/org/apache/ant/ant-props/1.0.0/
- 阿里云 CentOS 归档:https://mirrors.aliyun.com/centos-vault/
- Ant 属性展开机制(Ant 手册 Properties 章节):https://ant.apache.org/manual/properties.html