docs(guidelines): 更新编码指南并添加工作日志和开发工具文档
- 简化 AGENTS.md 文档结构,更新构建命令和代码风格指南 - 新增 2026 年 1 月工作日志记录项目进展和问题解决 - 添加 Cursor 连接 WSL 开发完整教程,涵盖环境配置和最佳实践 - 创建 SDKMAN Java 和 Maven 版本管理指南,支持多项目环境 - 编写 Windows Jabba Java 版本管理文档,提供 PowerShell 集成方案
This commit is contained in:
270
src/programming/backend/java/功能整理/SDKMAN-Java-Maven版本管理.md
Normal file
270
src/programming/backend/java/功能整理/SDKMAN-Java-Maven版本管理.md
Normal file
@@ -0,0 +1,270 @@
|
||||
---
|
||||
title: 使用 SDKMAN 管理 Java 和 Maven 多版本
|
||||
icon: mdi:package-variant
|
||||
date: 2026-02-04
|
||||
category:
|
||||
- 实用工具
|
||||
- JAVA
|
||||
tag:
|
||||
- SDKMAN
|
||||
- Java
|
||||
- Maven
|
||||
- 版本管理
|
||||
---
|
||||
|
||||
# 使用 SDKMAN 管理 Java 和 Maven 多版本方案
|
||||
|
||||
在开发过程中,我们经常需要在不同的项目之间切换不同的 Java 和 Maven 版本。SDKMAN (Software Development Kit Manager) 是一个强大的工具,可以帮助我们轻松管理多个版本的软件开发工具包。
|
||||
|
||||
<!-- more -->
|
||||
|
||||
## 概述
|
||||
|
||||
在开发过程中,我们经常需要在不同的项目之间切换不同的 Java 和 Maven 版本。SDKMAN (Software Development Kit Manager) 是一个强大的工具,可以帮助我们轻松管理多个版本的软件开发工具包。
|
||||
|
||||
## 当前系统环境
|
||||
|
||||
- **操作系统**: Linux
|
||||
- **当前 Java 版本**: OpenJDK 1.8.0_472 (Java 8)
|
||||
- **当前 Maven 版本**: Apache Maven 3.8.7
|
||||
- **SDKMAN 状态**: 需要安装
|
||||
|
||||
## 安装 SDKMAN
|
||||
|
||||
### 1. 下载并安装 SDKMAN
|
||||
|
||||
```bash
|
||||
curl -s "https://get.sdkman.io" | bash
|
||||
```
|
||||
|
||||
### 2. 初始化 SDKMAN
|
||||
|
||||
```bash
|
||||
source "$HOME/.sdkman/bin/sdkman-init.sh"
|
||||
```
|
||||
|
||||
### 3. 验证安装
|
||||
|
||||
```bash
|
||||
sdk version
|
||||
```
|
||||
|
||||
## 管理 Java 版本
|
||||
|
||||
### 1. 查看可用的 Java 版本
|
||||
|
||||
```bash
|
||||
sdk list java
|
||||
```
|
||||
|
||||
### 2. 安装特定版本的 Java
|
||||
|
||||
```bash
|
||||
# 安装 Java 11
|
||||
sdk install java 11.0.21-tem
|
||||
|
||||
# 安装 Java 17 (LTS)
|
||||
sdk install java 17.0.9-tem
|
||||
|
||||
# 安装 Java 21 (最新 LTS)
|
||||
sdk install java 21.0.1-tem
|
||||
|
||||
# 安装 OpenJDK 版本
|
||||
sdk install java 8.0.382-tem
|
||||
```
|
||||
|
||||
### 3. 切换 Java 版本
|
||||
|
||||
```bash
|
||||
# 临时切换到 Java 11
|
||||
sdk use java 11.0.21-tem
|
||||
|
||||
# 临时切换到 Java 17
|
||||
sdk use java 17.0.9-tem
|
||||
```
|
||||
|
||||
### 4. 设置默认 Java 版本
|
||||
|
||||
```bash
|
||||
sdk default java 17.0.9-tem
|
||||
```
|
||||
|
||||
### 5. 查看当前使用的 Java 版本
|
||||
|
||||
```bash
|
||||
sdk current java
|
||||
java -version
|
||||
```
|
||||
|
||||
## 管理 Maven 版本
|
||||
|
||||
### 1. 查看可用的 Maven 版本
|
||||
|
||||
```bash
|
||||
sdk list maven
|
||||
```
|
||||
|
||||
### 2. 安装特定版本的 Maven
|
||||
|
||||
```bash
|
||||
# 安装 Maven 3.8.x
|
||||
sdk install maven 3.8.8
|
||||
|
||||
# 安装 Maven 3.9.x
|
||||
sdk install maven 3.9.6
|
||||
```
|
||||
|
||||
### 3. 切换 Maven 版本
|
||||
|
||||
```bash
|
||||
sdk use maven 3.9.6
|
||||
```
|
||||
|
||||
### 4. 设置默认 Maven 版本
|
||||
|
||||
```bash
|
||||
sdk default maven 3.9.6
|
||||
```
|
||||
|
||||
### 5. 查看当前使用的 Maven 版本
|
||||
|
||||
```bash
|
||||
sdk current maven
|
||||
mvn -version
|
||||
```
|
||||
|
||||
## 项目级版本管理
|
||||
|
||||
SDKMAN 支持项目级别的版本管理,通过 `.sdkmanrc` 文件可以实现进入项目目录时自动切换到指定版本。
|
||||
|
||||
### 1. 创建项目版本配置文件
|
||||
|
||||
```bash
|
||||
# 在项目根目录创建 .sdkmanrc 文件
|
||||
cat > .sdkmanrc << EOF
|
||||
java=17.0.9-tem
|
||||
maven=3.9.6
|
||||
EOF
|
||||
```
|
||||
|
||||
### 2. 启用项目版本环境
|
||||
|
||||
```bash
|
||||
# 进入项目目录
|
||||
cd your-project
|
||||
|
||||
# 激活项目配置的版本
|
||||
sdk env
|
||||
```
|
||||
|
||||
### 3. 自动切换(可选)
|
||||
|
||||
SDKMAN 可以配置为在进入包含 `.sdkmanrc` 文件的目录时自动切换版本。
|
||||
|
||||
```bash
|
||||
# 启用自动切换
|
||||
sdk enable auto_env
|
||||
```
|
||||
|
||||
## 常用 SDKMAN 命令
|
||||
|
||||
### 1. 查看所有已安装的版本
|
||||
|
||||
```bash
|
||||
sdk list installed
|
||||
```
|
||||
|
||||
### 2. 查看特定工具的所有版本
|
||||
|
||||
```bash
|
||||
sdk list java
|
||||
sdk list maven
|
||||
```
|
||||
|
||||
### 3. 卸载不需要的版本
|
||||
|
||||
```bash
|
||||
# 卸载 Java 11
|
||||
sdk uninstall java 11.0.21-tem
|
||||
|
||||
# 卸载 Maven 3.8.8
|
||||
sdk uninstall maven 3.8.8
|
||||
```
|
||||
|
||||
### 4. 更新 SDKMAN
|
||||
|
||||
```bash
|
||||
sdk selfupdate
|
||||
```
|
||||
|
||||
### 5. 查看帮助
|
||||
|
||||
```bash
|
||||
sdk help
|
||||
```
|
||||
|
||||
## 实际使用场景示例
|
||||
|
||||
### 场景 1:新项目使用 Java 17 + Maven 3.9
|
||||
|
||||
```bash
|
||||
cd new-project
|
||||
sdk use java 17.0.9-tem
|
||||
sdk use maven 3.9.6
|
||||
echo "java=17.0.9-tem" > .sdkmanrc
|
||||
echo "maven=3.9.6" >> .sdkmanrc
|
||||
```
|
||||
|
||||
### 场景 2:维护旧项目使用 Java 8 + Maven 3.8
|
||||
|
||||
```bash
|
||||
cd legacy-project
|
||||
sdk use java 8.0.382-tem
|
||||
sdk use maven 3.8.8
|
||||
echo "java=8.0.382-tem" > .sdkmanrc
|
||||
echo "maven=3.8.8" >> .sdkmanrc
|
||||
```
|
||||
|
||||
### 场景 3:升级项目 Java 版本
|
||||
|
||||
```bash
|
||||
cd project-to-upgrade
|
||||
# 从 Java 8 升级到 Java 17
|
||||
sdk install java 17.0.9-tem
|
||||
sdk use java 17.0.9-tem
|
||||
# 更新 .sdkmanrc 文件
|
||||
sed -i 's/java=.*/java=17.0.9-tem/' .sdkmanrc
|
||||
```
|
||||
|
||||
## 最佳实践建议
|
||||
|
||||
1. **保持系统 Java 版本最低**: 系统级别的 Java 保持为较低版本(如 Java 8),其他版本通过 SDKMAN 管理。
|
||||
|
||||
2. **项目配置版本控制**: 将 `.sdkmanrc` 文件提交到版本控制系统,确保团队成员使用一致的开发环境。
|
||||
|
||||
3. **定期清理不需要的版本**: 定期使用 `sdk list installed` 查看已安装版本,卸载不再使用的版本以节省磁盘空间。
|
||||
|
||||
4. **文档化版本要求**: 在项目 README 文件中明确说明所需的 Java 和 Maven 版本。
|
||||
|
||||
5. **测试环境一致性**: 开发、测试、生产环境尽量保持相同的版本配置。
|
||||
|
||||
## 环境变量配置
|
||||
|
||||
如果需要永久配置环境变量,可以在 `~/.bashrc` 或 `~/.zshrc` 中添加:
|
||||
|
||||
```bash
|
||||
# SDKMAN 初始化
|
||||
export SDKMAN_DIR="$HOME/.sdkman"
|
||||
[[ -s "$SDKMAN_DIR/bin/sdkman-init.sh" ]] && source "$SDKMAN_DIR/bin/sdkman-init.sh"
|
||||
```
|
||||
|
||||
## 总结
|
||||
|
||||
SDKMAN 提供了一个优雅的解决方案来管理 Java 和 Maven 的多版本问题。通过合理使用 SDKMAN,我们可以:
|
||||
|
||||
- 轻松在不同项目间切换版本
|
||||
- 避免版本冲突问题
|
||||
- 简化团队成员的环境配置
|
||||
- 提高开发效率和项目维护性
|
||||
|
||||
建议所有需要处理多版本 Java 项目的开发者都使用 SDKMAN 进行版本管理。
|
||||
Reference in New Issue
Block a user