CentOS 8 安装 Apache XMLBeans 指南

本指南在 CentOS Linux 8(8.4.2105)服务器上实测了 EOL 源修复(vault 403 改用阿里云 centos-vault)、JDK 17/JDK 8 双基线安装、Maven 依赖与 jar 直用两条引入路径,全部命令与回显真实可复现。

Apache XMLBeansApache XMLBeans2026/10/15

CentOS 8 安装 Apache XMLBeans 指南

目标:在 CentOS Linux 8 服务器上完成 Apache XMLBeans 5.4.1 的安装与验证:修复 EOL 软件源、安装 JDK 17(附 JDK 8 兼容实测)、以 Maven 依赖与官方 jar 直用两种方式引入 XMLBeans,全部步骤实测通过。

一、环境信息

本文所有命令与回显均来自以下真实服务器环境,实测时间 2026-10-15:

# head -4 /etc/os-release
NAME="CentOS Linux"
VERSION="8"
ID="centos"
ID_LIKE="rhel fedora"
# cat /etc/centos-release
CentOS Linux release 8.4.2105 (Core)
# uname -m
x86_64

XMLBeans 是纯 Java 的 XML 绑定框架(把 XML 与 XSD 编译为强类型 Java 类),不是常驻服务,验证标准为:java/javac/mvn 可用、依赖可解析、示例代码可编译运行。实测版本为 Apache XMLBeans 5.4.1(Maven Central 最新 release,坐标 org.apache.xmlbeans:xmlbeans)。

  • 工作根目录:/work(示例 XSD 与产物统一放 /work/schema、/work/mvn-demo)
  • 本环境默认 Java 是 1.8(见 4.2 节),本文同时实测 JDK 17 优先方案与 JDK 8 回退方案

二、前置条件

  1. root 权限;服务器可访问互联网。
  2. XMLBeans 构件来源为 Maven Central(repo1.maven.org):
# curl -sI https://repo1.maven.org/maven2/org/apache/xmlbeans/xmlbeans/ | head -1
HTTP/2 200
  1. 可访问阿里云镜像站 mirrors.aliyun.com(第四节的换源依赖它):
# curl -sI https://mirrors.aliyun.com/centos-vault/ | head -1
HTTP/2 200
  1. 磁盘空间不低于 2 GB。

CentOS 8 已于 2021-12-31 停止维护,原官方源(mirrorlist.centos.org)已停止解析,第四节的"修复软件源"是本指南的前置步骤,也是 CentOS 8 平台特有的必踩坑。

三、版本选型说明

以 Maven Central 实际元数据为准(https://repo1.maven.org/maven2/org/apache/xmlbeans/xmlbeans/maven-metadata.xml):

<latest>5.4.1</latest>
<release>5.4.1</release>
<lastUpdated>20260923082850</lastUpdated>
版本线最后版本特征是否建议
2.x2.6.0历史架构(2004~2012),JDK 5 时代仅维护遗留系统
3.x3.1.0独立为 Apache 项目后的过渡版本不建议新项目
4.x4.0.0API 重构起点,基线 Java 8存量升级过渡
5.x5.4.1基线 Java 8(字节码 major=52 实测)、日志用 log4j-api推荐

本文实际采用 5.4.1。它对 JDK 的最低要求是 Java 8(jar 内 XmlObject.class 实测 major version: 52,见 4.4 节),因此 5.x 官方基线"JDK 8+"在本环境两条路都通:JDK 17(本节实测优先)与 JDK 8(第五节实测回退)。

💡 技术拓展:同为"XSD → Java 绑定"方案,JAXB 在 JDK 11+ 被移出 JDK 需外挂依赖,而 XMLBeans 保持独立发布且附带运行期类型系统自省(SchemaType)与完整游标(XmlCursor);DOM4j/JDOM 只有树模型无 Schema 强类型。生产选型建议 XMLBeans 5.4.1 或 JAXB 2.3.x(JDK 8 环境),本文选前者。

四、方案 A:Maven 依赖安装(推荐)

4.1 修复 EOL 软件源

先复现故障(新装的 CentOS 8 直接 dnf makecache 会失败):

# dnf makecache
CentOS Linux 8 - AppStream                     1.6 kB/s | 462  B     00:00
Errors during downloading metadata for repository 'appstream':
  - Curl error (6): Couldn't resolve host name for http://mirrorlist.centos.org/?release=8&arch=x86_64&repo=AppStream&infra=stock
Error: Failed to download metadata for repo 'appstream'.

(baseos、extras 仓库同样报错,dnf 最终返回非 0。)原因是 mirrorlist.centos.org 域名已停止解析。官方修复建议是切换 vault.centos.org,但实测该站对直接访问返回 403:

# curl -sI https://vault.centos.org/8.5.2111/BaseOS/x86_64/os/repodata/repomd.xml | head -1
HTTP/2 403
# curl -sI https://mirrors.aliyun.com/centos-vault/8.5.2111/BaseOS/x86_64/os/repodata/repomd.xml | head -1
HTTP/2 200

结论:改用阿里云 centos-vault 镜像。仓库文件中 baseurl 模板是 http://mirror.centos.org/$contentdir/$releasever/...,替换主机并把 $releasever 固定到 8.5.2111(CentOS Linux 8 的最后一个发布快照,$releasever 默认值 8 在 vault 目录里不存在):

# echo '8.5.2111' > /etc/dnf/vars/releasever
# sed -i -e 's|mirrorlist=|#mirrorlist=|g' \
>        -e 's|#baseurl=http://mirror.centos.org/$contentdir|baseurl=https://mirrors.aliyun.com/centos-vault|g' \
>        /etc/yum.repos.d/CentOS-Linux-*.repo
# grep -A3 '^\[appstream\]' /etc/yum.repos.d/CentOS-Linux-AppStream.repo
[appstream]
name=CentOS Linux $releasever - AppStream
#mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=AppStream&infra=$infra
baseurl=https://mirrors.aliyun.com/centos-vault/$releasever/AppStream/$basearch/os/

为什么固定 8.5.2111 而不是本机自带的 8.4.2105:实测阿里云的 centos-vault/8.4.2105 快照不完整——dnf list available 'java-1.8.0-openjdk*' 只列出 accessibility/demo/javadoc 等 7 个包,核心的 java-1.8.0-openjdk、java-1.8.0-openjdk-devel 与 maven 都"No matching Packages to list";而 8.5.2111 快照完整(下文三组包均可用)。8.5.2111 是该系列的最终快照,包内容与 8.4 同源演进,兼容无虞。

重建缓存验证:

# dnf makecache
CentOS Linux 8.5.2111 - AppStream               269 kB/s | 8.4 MB     00:32
CentOS Linux 8.5.2111 - BaseOS                   94 kB/s | 9.2 MB     01:39
Metadata cache created.

4.2 安装 JDK 17(优先)与 Maven

el8 仓库里 java-17-openjdk 在 8.5 快照中可用(17.0.1):

# dnf list available 'java-17-openjdk*'
...
java-17-openjdk-jmods.x86_64              1:17.0.1.0.12-2.el8_5        appstream
java-17-openjdk-src.x86_64                1:17.0.1.0.12-2.el8_5        appstream
java-17-openjdk-static-libs.x86_64        1:17.0.1.0.12-2.el8_5        appstream

安装 JDK 17 与 Maven(本文另装 JDK 8 用于第五节回退实测):

# dnf install -y java-17-openjdk-devel java-1.8.0-openjdk-devel maven
...
# rpm -q java-17-openjdk-devel java-1.8.0-openjdk-devel maven
java-17-openjdk-devel-1:17.0.1.0.12-2.el8_5.x86_64
java-1.8.0-openjdk-devel-1:1.8.0.312.b07-2.el8_5.x86_64
maven-1:3.5.4-5.module_el8.0.0+39+6a9b6e22.noarch

重复执行会得到确认回显(无需重复安装):

# dnf install -y java-17-openjdk-devel maven
...
Package java-17-openjdk-devel-1:17.0.1.0.12-2.el8_5.x86_64 is already installed.
Package maven-1:3.5.4-5.module_el8.0.0+39+6a9b6e22.noarch is already installed.
Nothing to do.

4.3 el8 Maven 必须显式 JAVA_HOME

el8 的 mvn 在没有 JAVA_HOME 时回落到 PATH 里的 java,而 alternatives 默认指向 JDK 8:

# 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)
# alternatives --display java | head -2
java - status is auto.
 link currently points to /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.312.b07-2.el8_5.x86_64/jre/bin/java

于是不设 JAVA_HOME 时 Maven 实际用的是 JDK 8:

# mvn -v
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
OS name: "linux", version: "6.8.0-138-generic", arch: "amd64", family: "unix"

显式指向 JDK 17 后才正确:

# export JAVA_HOME=/usr/lib/jvm/java-17-openjdk
# mvn -v | head -4
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
Default locale: en_US, platform encoding: ANSI_X3.4-1968

持久化建议写入 /etc/profile.d/jdk17.sh:export JAVA_HOME=/usr/lib/jvm/java-17-openjdk。若工程必须留在 JDK 8,则不要设置 maven.compiler.release=17(见 4.6 节实测报错)。

4.4 创建工程并引入依赖

# mkdir -p /work/mvn-demo/src/main/java/demo
# cd /work/mvn-demo

/work/mvn-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>xmlbeans-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.xmlbeans</groupId>
      <artifactId>xmlbeans</artifactId>
      <version>5.4.1</version>
    </dependency>
    <dependency>
      <groupId>net.sf.saxon</groupId>
      <artifactId>Saxon-HE</artifactId>
      <version>12.10</version>
    </dependency>
  </dependencies>

  <build>
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-compiler-plugin</artifactId>
        <version>3.11.0</version>
      </plugin>
    </plugins>
  </build>
</project>

Maven 3.5.4 默认绑定的 compiler 插件不认识 --release 参数,必须显式固定 maven-compiler-plugin 3.11.0(该插件要求 Maven 3.2.5+,3.5.4 满足)。

4.5 最小验证代码

/work/mvn-demo/src/main/java/demo/GenericDemo.java:

package demo;

import org.apache.xmlbeans.SimpleValue;
import org.apache.xmlbeans.XmlObject;
import org.apache.xmlbeans.XmlOptions;

import javax.xml.namespace.QName;
import java.io.File;

public class GenericDemo {

    static final String NS = "http://example.com/order";
    static final QName Q_ORDER = new QName(NS, "order");
    static final QName Q_CUSTOMER = new QName(NS, "customer");
    static final QName Q_EMAIL = new QName(NS, "email");
    static final QName Q_ID = new QName("", "id");

    public static void main(String[] args) throws Exception {
        XmlObject doc = XmlObject.Factory.parse(new File("/work/schema/order.xml"));
        System.out.println("解析完成,schemaType = " + doc.schemaType());

        XmlObject order = doc.selectChildren(Q_ORDER)[0];
        System.out.println("selectChildren(order) 命中 = " + doc.selectChildren(Q_ORDER).length);

        System.out.println("selectAttribute(id).getStringValue() = "
                + ((SimpleValue) order.selectAttribute(Q_ID)).getStringValue());

        XmlObject email = order.selectChildren(Q_CUSTOMER)[0].selectChildren(Q_EMAIL)[0];
        System.out.println("customer/email 文本值 = " + ((SimpleValue) email).getStringValue());

        System.out.println("缩进序列化首行 = "
                + doc.xmlText(new XmlOptions().setSavePrettyPrint()).split("\n")[0]);
    }
}

配套示例 /work/schema/order.xml:

<?xml version="1.0" encoding="UTF-8"?>
<ord:order xmlns:ord="http://example.com/order" id="A-2026-1015" date="2026-10-15">
  <ord:customer vip="true">
    <ord:name>张伟</ord:name>
    <ord:email>zhangwei@example.com</ord:email>
  </ord:customer>
  <ord:item sku="SKU-1001" qty="2">
    <ord:name>机械键盘</ord:name>
    <ord:price>399.0</ord:price>
  </ord:item>
</ord:order>

4.6 编译与运行验证

JAVA_HOME 正确指向 JDK 17 时编译成功:

# export JAVA_HOME=/usr/lib/jvm/java-17-openjdk
# cd /work/mvn-demo && mvn -B clean compile
...
[INFO] --- maven-compiler-plugin:3.11.0:compile (default-compile) @ xmlbeans-demo ---
[INFO] Changes detected - recompiling the module!
[INFO] Compiling 5 source files with javac [debug release 17] to target/classes
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS

若忘记设置 JAVA_HOME(Maven 落回 JDK 8),同一工程会真实报错:

# unset JAVA_HOME && mvn -B clean compile
...
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.11.0:compile (default-compile) on project xmlbeans-demo: Fatal error compiling: invalid flag: --release -> [Help 1]

这就是"el8 Maven 需显式 JAVA_HOME"的完整含义:mvn 不会自己找 JDK 17,--release 17 这类参数只有 JDK 9+ 的 javac 才认识。

确认 XMLBeans 基线(JDK 17 上运行 scomp 生成、javap 反查字节码版本):

# javap -v -cp /work/xmlbeans-5.4.1.jar org.apache.xmlbeans.XmlObject 2>/dev/null | grep -m1 major
  major version: 52

major version: 52 即 Java 8 字节码,所以 5.4.1 在 JDK 8 上同样可加载运行(第五节实测)。

运行验证(用 /root/.m2 仓库中的 jar 拼类路径):

# export JAVA_HOME=/usr/lib/jvm/java-17-openjdk
# M2=~/.m2/repository
# java -Dfile.encoding=UTF-8 -cp target/classes:$M2/org/apache/xmlbeans/xmlbeans/5.4.1/xmlbeans-5.4.1.jar:$M2/org/apache/logging/log4j/log4j-api/2.26.1/log4j-api-2.26.1.jar demo.GenericDemo
解析完成,schemaType = N=
selectChildren(order) 命中 = 1
selectAttribute(id).getStringValue() = A-2026-1015
customer/email 文本值 = zhangwei@example.com
缩进序列化首行 = <?xml version="1.0" encoding="UTF-8"?>

验证通过。schemaType = N= 表示类路径上没有该文档的 Schema 类型系统 jar,解析退化为通用 XmlObject(scomp 生成类型 jar 后会显示 D=order@http://example.com/order,见《Apache XMLBeans 5.4.1 快速入门与集成示例》第四节)。

五、方案 B:官方 jar 直用与 scomp 直调(JDK 8 也可用)

5.1 方案说明

5.x 不再发布传统 bin 分发包:downloads.apache.org/xmlbeans/ 已下线(404),archive.apache.org/dist/xmlbeans/binaries/ 最新仅到 2.6.0。5.x 的权威"安装版"就是 Maven Central 的 xmlbeans-5.4.1.jar——scomp 编译器也内置其中(主类 org.apache.xmlbeans.impl.tool.SchemaCompiler)。

💡 技术拓展:jar 内 org.apache.xmlbeans.impl.tool.XMLBean 是 Ant 任务类(继承 org.apache.tools.ant.taskdefs.MatchingTask,实测无 main 方法);命令行入口是同包 SchemaCompiler。旧资料"找 bin/scomp 脚本"的思路对 5.x 已失效。

5.2 下载与校验

# mkdir -p /work && cd /work
# curl -sO https://repo1.maven.org/maven2/org/apache/xmlbeans/xmlbeans/5.4.1/xmlbeans-5.4.1.jar
# curl -sO https://repo1.maven.org/maven2/org/apache/logging/log4j/log4j-api/2.26.1/log4j-api-2.26.1.jar
# curl -sO https://repo1.maven.org/maven2/net/sf/saxon/Saxon-HE/12.10/Saxon-HE-12.10.jar
# ls -l xmlbeans-5.4.1.jar log4j-api-2.26.1.jar Saxon-HE-12.10.jar
-rw-r--r-- 1 root root 2227616 Oct 15 11:44 xmlbeans-5.4.1.jar
-rw-r--r-- 1 root root  351428 Oct 15 11:44 log4j-api-2.26.1.jar
-rw-r--r-- 1 root root 5793277 Oct 15 11:44 Saxon-HE-12.10.jar
# sha1sum xmlbeans-5.4.1.jar
7a7f86b1c0b4cf30081d0c99ec8f7303208d555e  xmlbeans-5.4.1.jar
# curl -s https://repo1.maven.org/maven2/org/apache/xmlbeans/xmlbeans/5.4.1/xmlbeans-5.4.1.jar.sha1
7a7f86b1c0b4cf30081d0c99ec8f7303208d555e

三个 jar 的 SHA1 实测与 Maven Central 官方 .sha1 一致:

文件SHA1
xmlbeans-5.4.1.jar7a7f86b1c0b4cf30081d0c99ec8f7303208d555e
log4j-api-2.26.1.jarb9864ed8d0c01f65f3b0bf70f1447e5cc1b49c24
Saxon-HE-12.10.jar1d6492dbfa32ddb2cd432fa3fbb940bf8137a5d2

5.3 JDK 8 直跑验证(回退方案实测)

XMLBeans 5.4.1 字节码为 Java 8(major=52),生成的类型 jar 同样如此,所以在本机默认的 JDK 8 上也能完整使用。用 JDK 8 的 javac 直接编译示例(XSD 与演示类来自第三节工程):

# cd /work
# mkdir -p out-jdk8
# javac -encoding UTF-8 -cp xmlbeans-5.4.1.jar:log4j-api-2.26.1.jar:order-xmlbeans.jar:Saxon-HE-12.10.jar:xmlresolver-5.3.3.jar -d out-jdk8 mvn-demo/src/main/java/demo/*.java
# echo $?
0
# java -Dfile.encoding=UTF-8 -cp out-jdk8:xmlbeans-5.4.1.jar:log4j-api-2.26.1.jar:order-xmlbeans.jar demo.TypedDemo
id = A-2026-1015 date = Thu Oct 15 00:00:00 GMT 2026
customer = 张伟 <zhangwei@example.com> vip = true
地址 = 广东省 深圳市 科技园南路 88 号
item SKU-1001 qty=2 price=399.0 name=机械键盘

(order-xmlbeans.jar 是 scomp 编译 /work/schema/order.xsd 的产物,见 5.4;TypedDemo 源码见《Apache XMLBeans 5.4.1 快速入门与集成示例》第四节。)

5.4 scomp 直调:XSD → jar

# cd /work
# java -cp xmlbeans-5.4.1.jar:log4j-api-2.26.1.jar org.apache.xmlbeans.impl.tool.SchemaCompiler -out order-xmlbeans.jar schema/order.xsd
Time to build schema type system: 0.454 seconds
Time to generate code: 0.047 seconds
Time to compile code: 0.758 seconds
Compiled types to: order-xmlbeans.jar
# echo $?
0

注意:scomp 内部调用 javax.tools 编译生成源码,必须在 JDK(javac 所在)而非仅 JRE 上运行;本节在 JDK 8 上实测通过,同命令在 JDK 17 上耗时 1.0 秒左右(0.387/0.048/1.0),详见《Apache XMLBeans 5.4.1 scomp 编译与进阶实战详解》。

六、方案对比与选择建议

维度方案 A:Maven 依赖方案 B:jar 直用
安装成本换源后 dnf install maven 即可手工下载 3~4 个 jar 并维护类路径
传递依赖自动解析(log4j-api 2.26.1、xmlresolver 5.3.3)手工补齐,缺一个就 NoClassDefFoundError
版本升级改 pom 版本号重新下载替换
JDK 8 场景可用(compiler 插件改 source/target 1.8)可用(本节实测)
适用场景常规 Java 工程离线构建机、CI 沙箱、教学演示
本文结论生产首选离线补充

七、配置说明

7.1 JAVA_HOME 与多 JDK

el8 多 JDK 共存靠 alternatives,默认指向 JDK 8(见 4.3 节回显)。生产脚本建议显式导出:

# echo 'export JAVA_HOME=/usr/lib/jvm/java-17-openjdk' > /etc/profile.d/jdk17.sh
# source /etc/profile.d/jdk17.sh
# echo $JAVA_HOME
/usr/lib/jvm/java-17-openjdk

需要临时用 JDK 8 跑某个工具时,直接用绝对路径调用:/usr/lib/jvm/java-1.8.0-openjdk/bin/java,避免改 alternatives。

7.2 日志与编码

运行期 Log4j API could not find a logging provider. 提示表示仅有日志 API 无实现,生产环境补 org.apache.logging.log4j:log4j-core:2.26.1 即可消除。中文场景必须双保险:编译 javac -encoding UTF-8、运行 -Dfile.encoding=UTF-8——本环境 mvn -v 显示 platform encoding: ANSI_X3.4-1968(POSIX locale),不加参数中文会乱码。

八、多版本管理

JDK 层由 alternatives 管理(alternatives --config java 可交互切换);jar 层版本由 Maven 仓库隔离:

# ls -1 ~/.m2/repository/org/apache/xmlbeans/xmlbeans/
2.6.0
5.4.1

(多版本共存演示:mvn -q -B dependency:get -Dartifact=org.apache.xmlbeans:xmlbeans:2.6.0 后即可见两个版本目录,切换只需改 pom 的 <version>。)

注意 2.6.0 与 5.x 的 API 存在代差(如 5.x 的 XmlObject 上已无 getStringValue(),取文本值需 (SimpleValue) obj).getStringValue()),不要在同一工程内混用两个版本线。

九、常见问题(FAQ)

Q1:dnf makecache 报 Curl error (6): Couldn't resolve host name for http://mirrorlist.centos.org/...。 CentOS 8 EOL 后官方 mirrorlist 已下线,按 4.1 节换阿里云 centos-vault 并固定 releasever=8.5.2111。

Q2:换 vault.centos.org 后返回 403。 实测 curl -sI https://vault.centos.org/.../repomd.xml 返回 HTTP/2 403,直连该站不可用;改用 mirrors.aliyun.com/centos-vault(实测 HTTP/2 200)。

Q3:Maven 编译报 Fatal error compiling: invalid flag: --release。 Maven 实际跑在 JDK 8 上(未设 JAVA_HOME),而 --release 是 JDK 9+ 参数。按 4.3 节显式 export JAVA_HOME=/usr/lib/jvm/java-17-openjdk,或把 pom 改为 maven.compiler.source/target=1.8。

Q4:dnf list available maven 提示 No matching。 el8 的 Maven 以模块(module)发布,部分查询方式不显示模块包;直接 dnf install -y maven 即可(实测装到 maven-1:3.5.4-5.module_el8.0.0+39+6a9b6e22)。

Q5:运行报 NoClassDefFoundError: org/apache/logging/log4j/Logger。 jar 直用时漏带 log4j-api,类路径补上 log4j-api-2.26.1.jar 即可;Maven 方案由传递依赖自动解决。

十、卸载与清理

# rm -rf /work/mvn-demo /work/schema /work/out-jdk8
# rm -rf ~/.m2/repository/org/apache/xmlbeans ~/.m2/repository/net/sf/saxon ~/.m2/repository/org/xmlresolver
# dnf remove java-17-openjdk-devel java-1.8.0-openjdk-devel maven

dnf remove 会列出将移除的包数并要求确认(约 100 余个相关包,含依赖);保留 JDK 时仅执行前两步。/etc/dnf/vars/releasever 与换源 sed 不再需要时可还原。

十一、参考链接