如何配置SDKMAN自动使用特定发行版Java主版本的最新补丁?
问题:如何让SDKMAN自动使用特定发行版Java主版本的最新补丁?
我用SDKMAN管理本地Java环境,执行sdk list java能看到所有补丁版本,比如Amazon Corretto的21版(标识21-amzn)和21.0.1版(标识21.0.1-amzn)。我想让SDKMAN自动用Corretto Java 21的最新补丁版本,后续也能自动更新到新的补丁。
但执行sdk upgrade java时,系统提示java is up-to-date,可明明sdk list java里有21.0.1这个更新的补丁版本,看来SDKMAN把21和21.0.1当成了完全独立的版本。
核心问题:能不能配置SDKMAN,让它始终使用特定发行版Java主版本的最新稳定版?
================================================================================ Available Java Versions for macOS ARM 64bit ================================================================================ Vendor | Use | Version | Dist | Status | Identifier -------------------------------------------------------------------------------- Corretto | | 21 | amzn | installed | 21-amzn | | 21.0.1 | amzn | | 21.0.1-amzn | | 20.0.2 | amzn | | 20.0.2-amzn | | 20.0.1 | amzn | | 20.0.1-amzn | | 17.0.9 | amzn | | 17.0.9-amzn | | 17.0.8 | amzn | | 17.0.8-amzn | | 17.0.7 | amzn | | 17.0.7-amzn | | 11.0.21 | amzn | | 11.0.21-amzn | | 11.0.20 | amzn | | 11.0.20-amzn | | 11.0.19 | amzn | | 11.0.19-amzn | | 8.0.392 | amzn | | 8.0.392-amzn | | 8.0.382 | amzn | | 8.0.382-amzn | | 8.0.372 | amzn | | 8.0.372-amzn
解决方案
SDKMAN本身没有内置配置直接实现这个需求,但有两种方法能达成目标:
1. 用通配符指定版本安装并设为默认
安装Corretto Java 21的最新补丁版时,用主版本号加通配符的写法:
sdk install java 21.*-amzn
这条命令会自动定位并安装Corretto 21系列里的最新补丁版本。安装完成后,执行下面的命令设为全局默认:
sdk default java 21.*-amzn
之后每次运行sdk upgrade java,SDKMAN就会自动检测21系列的新补丁并完成更新。
2. 写个脚本自动检查切换
如果想更省心,可以写个简单的shell脚本,自动检查并切换到最新的Corretto 21版本:
#!/bin/bash # 抓取Corretto 21系列的最新版本标识 LATEST_CORRETTO_21=$(sdk list java | grep -E '21\.[0-9]+-amzn' | awk '{print $NF}' | sort -V | tail -n 1) # 对比当前默认版本,不一样就切换 CURRENT_DEFAULT=$(sdk current java | awk '{print $NF}') if [ "$CURRENT_DEFAULT" != "$LATEST_CORRETTO_21" ]; then sdk install java "$LATEST_CORRETTO_21" sdk default java "$LATEST_CORRETTO_21" echo "已切换到Corretto 21最新版本: $LATEST_CORRETTO_21" else echo "当前已是Corretto 21最新版本" fi
把脚本存成update-corretto-21.sh,给它加执行权限:
chmod +x update-corretto-21.sh
可以手动运行,或者通过系统的定时任务(比如macOS的launchd、Linux的cron)定期自动执行。
内容的提问来源于stack exchange,提问作者ams
相关产品推荐
相关产品推荐

