作为一名长期在 Windows 平台开发的 Java 工程师,我一直在寻找既能保留 Windows 易用性又能获得 Linux 开发体验的解决方案。经过多年实践,WSL(Windows Subsystem for Linux)配合 SDKMAN 工具链的组合,已经成为我最推荐的环境配置方案。今天我就详细分享这套环境的搭建过程,从 WSL 安装到 Maven 配置优化,包含大量实战中积累的技巧和避坑指南。
这个方案特别适合以下场景:
在开始之前,我们需要确保 Windows 系统满足基本要求。打开 PowerShell 执行:
bash复制systeminfo | find "OS 版本"
输出应显示 Windows 10 版本 2004(内部版本 19041)或更高,或者 Windows 11 的任何版本。如果版本过低,需要通过 Windows Update 先升级系统。
注意:企业版 Windows 可能需要管理员特别启用 WSL 功能。如果遇到安装问题,建议检查组策略设置。
现代 Windows 系统已经简化了 WSL 安装流程,但核心功能仍需手动启用:
bash复制dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart
dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart
重启后,建议将 WSL 默认版本设置为 WSL2(性能更好):
bash复制wsl --set-default-version 2
现在我们可以直接通过命令行安装 Ubuntu 24.04:
bash复制wsl --install Ubuntu-24.04
这个命令会自动完成以下操作:
安装完成后,系统会提示创建 UNIX 用户。这里有几个关键注意事项:
验证安装是否成功:
bash复制cat /etc/os-release
应该能看到类似这样的输出:
bash复制PRETTY_NAME="Ubuntu 24.04 LTS"
NAME="Ubuntu"
VERSION_ID="24.04"
SDKMAN 是一个强大的开发工具管理平台,可以让我们轻松安装和管理多个版本的 JDK、Maven 等工具。安装前需要先准备依赖:
bash复制sudo apt update && sudo apt install -y curl unzip zip
这里有个实用技巧:如果下载速度慢,可以临时更换阿里云镜像源:
bash复制sudo sed -i 's|http://archive.ubuntu.com|https://mirrors.aliyun.com|g' /etc/apt/sources.list
sudo apt update
安装 SDKMAN 本体:
bash复制curl -s "https://get.sdkman.io" | bash
安装完成后,需要激活 SDKMAN。根据你使用的 shell 类型(bash 或 zsh),执行对应的命令:
bash复制# 对于 bash 用户
echo 'source "$HOME/.sdkman/bin/sdkman-init.sh"' >> ~/.bashrc
source ~/.bashrc
# 对于 zsh 用户
echo 'source "$HOME/.sdkman/bin/sdkman-init.sh"' >> ~/.zshrc
source ~/.zshrc
验证安装:
bash复制sdk version
通过 SDKMAN 安装 JDK 非常简单,首先查看可用版本:
bash复制sdk list java
你会看到一个很长的列表,我推荐选择 LTS(长期支持)版本。目前最稳定的是:
bash复制sdk install java 17.0.10-amzn
安装过程中,SDKMAN 会询问是否设置为默认版本,选择 Y。安装完成后,验证:
bash复制java -version
如果遇到 JAVA_HOME 未设置的问题,可以手动添加:
bash复制echo 'export JAVA_HOME=$(dirname $(dirname $(readlink -f $(which java))))' >> ~/.bashrc
source ~/.bashrc
通过 SDKMAN 安装 Maven 是最简单的方式:
bash复制sdk install maven
安装完成后,验证:
bash复制mvn -v
国内使用 Maven 中央仓库速度较慢,我们可以配置阿里云镜像。编辑 settings.xml 文件:
bash复制vim ~/.sdkman/candidates/maven/current/conf/settings.xml
找到 <mirrors> 部分,添加:
xml复制<mirror>
<id>aliyunmaven</id>
<mirrorOf>central</mirrorOf>
<name>阿里云公共仓库</name>
<url>https://maven.aliyun.com/repository/public</url>
</mirror>
bash复制export MAVEN_OPTS="-Xms512m -Xmx1024m -XX:MaxPermSize=256m"
bash复制mvn -T 1C clean install
bash复制mvn -o package
bash复制# 列出所有可用候选版本
sdk list
# 安装特定版本
sdk install maven 3.8.6
# 切换版本
sdk use java 11.0.12-open
# 设置默认版本
sdk default maven 3.9.6
# 升级所有已安装工具
sdk upgrade
访问 Windows 文件系统:
WSL 中可以通过 /mnt/c 访问 C 盘,/mnt/d 访问 D 盘等
从 Windows 访问 WSL 文件:
在文件资源管理器地址栏输入 \\wsl$\Ubuntu-24.04 即可
性能优化:
bash复制# 在 /etc/wsl.conf 中添加
[automount]
options = "metadata"
网络连接问题:
bash复制# 重置网络
sudo apt install --reinstall ca-certificates
sudo update-ca-certificates
文件权限问题:
bash复制# 修复 WSL 文件权限
sudo chown -R $USER:$USER ~
内存不足:
bash复制# 在 %USERPROFILE%\.wslconfig 中添加
[wsl2]
memory=4GB
swap=8GB
这套环境配置我已经在多个项目中实际使用,最大的优势是既能享受 Windows 的图形界面和办公软件,又能获得接近原生 Linux 的开发体验。特别是配合 VS Code 的 Remote - WSL 扩展,可以实现无缝的开发体验。