CentOS 8 安装 Apache Groovy 指南

面向 CentOS 8 服务器,讲解 Apache Groovy 4.0.24 安装:JDK 8/11/17 部署、SDKMAN 与 dnf 及二进制 zip 三种方式、版本验证、最小脚本运行真实回显与卸载步骤。

Apache GroovyApache Groovy安装部署JavaApacheCentOS 82026/10/12

CentOS 8 安装 Apache Groovy 指南

Apache Groovy 是运行在 JVM 之上的动态多面语言,既能作为独立脚本语言使用,也能无缝嵌入 Java 工程。本文在一台 CentOS Linux 8 服务器上完成 Groovy 4.0.24 的部署,全部命令与回显均来自真实执行。

一、前置条件

1.1 系统与权限

  • 操作系统:CentOS Linux 8(x86_64)。
  • 账号权限:具备 root 权限(示例统一使用 root / q1w2e3r4)。
  • 网络:可访问 CentOS 仓库与 Apache 归档站点;若内网受限,请预先离线获取安装包。
# cat /etc/os-release | head -2
NAME="CentOS Linux"
VERSION="8"

1.2 依赖软件

安装过程需要 unzip、curl 等基础工具;Groovy 4.0.24 要求 JDK 8 及以上(推荐 JDK 11 或 17)。

# dnf install -y unzip zip curl

二、安装 JDK

2.1 安装 JDK 11(推荐基线)

# dnf install -y java-11-openjdk-devel

2.2 安装 JDK 8 与 JDK 17(可选,便于多版本切换)

# dnf install -y java-1.8.0-openjdk-devel java-17-openjdk-devel
# ls -d /usr/lib/jvm/*openjdk*
/usr/lib/jvm/java-1.8.0-openjdk  /usr/lib/jvm/java-11-openjdk  /usr/lib/jvm/java-17-openjdk

2.3 验证 Java

# java -version
openjdk version "11.0.13" 2021-10-19 LTS
OpenJDK Runtime Environment 18.9 (build 11.0.13+8-LTS)
OpenJDK 64-Bit Server VM 18.9 (build 11.0.13+8-LTS, mixed mode, sharing)

三、安装 Groovy

Groovy 提供三种主流安装方式,任选其一即可;生产环境推荐官方二进制 zip,版本可控、路径清晰。

3.1 方式一:官方二进制 zip(推荐)

从 Apache 归档站下载 4.0.24 二进制包并解压到 /opt:

# curl -sSL -o /tmp/groovy.zip \
    https://archive.apache.org/dist/groovy/4.0.24/distribution/apache-groovy-binary-4.0.24.zip
# ls -l /tmp/groovy.zip
-rw-r--r-- 1 root root 29984474 /tmp/groovy.zip
# unzip -q /tmp/groovy.zip -d /opt && mv /opt/groovy-4.0.24 /opt/groovy
# ls /opt/groovy/bin | head
grape  grape.bat  groovy  groovy.bat  groovyConsole  groovyConsole.bat
groovyConsole_completion  groovy_completion  groovyc  groovyc.bat

配置环境变量,写入 /etc/profile.d/groovy.sh 使全局生效:

# cat > /etc/profile.d/groovy.sh <<'EOF'
export JAVA_HOME=/usr/lib/jvm/java-11-openjdk
export GROOVY_HOME=/opt/groovy
export PATH=$GROOVY_HOME/bin:$JAVA_HOME/bin:$PATH
EOF
# source /etc/profile.d/groovy.sh

3.2 方式二:SDKMAN 安装

SDKMAN 可在同一台服务器上并存多版本 Groovy:

# curl -s "https://get.sdkman.io" | bash
# source "$HOME/.sdkman/bin/sdkman-init.sh"
# sdk install groovy 4.0.24

安装完成后 sdk use groovy 4.0.24 即可切换版本。

3.3 方式三:dnf 仓库安装

CentOS 8 基础仓库不含 groovy 包,需先启用 EPEL:

# dnf install -y epel-release
# dnf install -y groovy

说明:实测 CentOS 8 基础仓库执行 dnf list available groovy 返回 Error: No matching Packages to list,因此该方式依赖 EPEL 且版本通常低于 4.x,建议优先使用方式一。

四、版本验证

# groovy --version
Groovy Version: 4.0.24 JVM: 11.0.13 Vendor: Red Hat, Inc. OS: Linux

# groovysh --version
@|green Groovy Shell|@ 4.0.24

# groovyc --version
Groovy compiler version 4.0.24
Copyright 2003-2023 The Apache Software Foundation. https://groovy-lang.org/

4.1 多 JDK 切换验证

同一份 Groovy 安装包可在不同 JDK 上运行:

JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk -> Groovy Version: 4.0.24 JVM: 1.8.0_312
JAVA_HOME=/usr/lib/jvm/java-11-openjdk    -> Groovy Version: 4.0.24 JVM: 11.0.13
JAVA_HOME=/usr/lib/jvm/java-17-openjdk    -> Groovy Version: 4.0.24 JVM: 17.0.1

五、最小脚本运行

5.1 内联执行

# groovy -e 'println "hello"; println([1,2,3].collect{it*2})'
hello
[2, 4, 6]

5.2 脚本文件执行

创建 /root/demo.groovy:

def nums = [1, 2, 3, 4, 5]
println "Hello, Groovy ${GroovySystem.version}"
println "doubled = ${nums.collect { it * 2 }}"
println "total   = ${nums.sum()}"

运行:

# groovy /root/demo.groovy
Hello, Groovy 4.0.24
doubled = [2, 4, 6, 8, 10]
total   = 15

5.3 编译后运行

# groovyc -d /root/classes /root/Hello.groovy
# java -cp /root/classes:/opt/groovy/lib/groovy-4.0.24.jar Hello Apache
Hello, Apache from compiled Groovy!

六、卸载

6.1 卸载二进制 zip 安装

# rm -rf /opt/groovy /root/.groovy
# rm -f /etc/profile.d/groovy.sh
# source /etc/profile

6.2 卸载 SDKMAN 安装

# sdk uninstall groovy 4.0.24

6.3 卸载 dnf 安装与 JDK

# dnf remove -y groovy
# dnf remove -y java-11-openjdk-devel

6.4 验证卸载

# groovy --version
-bash: groovy: command not found

卸载后如需彻底清理,可删除 Grape 缓存目录 /root/.groovy/grapes 与编译产物目录。

七、常见问题

Q1:groovy: command not found 如何排查?

确认 /etc/profile.d/groovy.sh 已创建且 GROOVY_HOME/bin 已加入 PATH,并重新登录或执行 source /etc/profile。

Q2:groovysh 启动后无响应、CPU 占用很高怎么办?

不要在当前目录为根目录 /(或超大目录树)的位置启动 groovysh;它会对类路径当前目录做包名递归扫描,目录过大会导致长时间无输出。请在业务目录下启动:

# mkdir -p /opt/groovy-work && cd /opt/groovy-work
# groovysh

Q3:@Grab 首次执行很慢?

@Grab 会从 Maven Central 拉取依赖并缓存到 ~/.groovy/grapes,首次较慢属正常现象;离线环境需预先缓存或配置私有仓库。