CentOS 8 安装 Apache Groovy 指南
面向 CentOS 8 服务器,讲解 Apache Groovy 4.0.24 安装:JDK 8/11/17 部署、SDKMAN 与 dnf 及二进制 zip 三种方式、版本验证、最小脚本运行真实回显与卸载步骤。
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,首次较慢属正常现象;离线环境需预先缓存或配置私有仓库。