温馨提示×

Java项目在Ubuntu上如何版本管理

小樊
35
2025-12-18 08:08:16
栏目: 编程语言

Java项目在 Ubuntu 的版本管理实践

一 概念澄清

  • 运行时版本管理:在同一台机器上安装并切换多个 JDK,让不同项目使用不同的 Java 版本(如 8/11/17/21)。
  • 代码版本管理:使用 Git 等工具管理源码的提交、分支、标签与协作。
  • 构建与发布版本管理:通过 Maven/Gradle 管理依赖、构建产物与发布版本号(如 1.2.3)。

二 运行时版本管理

  • 使用系统工具 update-alternatives(推荐)
    • 安装多个 JDK:sudo apt update && sudo apt install openjdk-8-jdk openjdk-11-jdk openjdk-17-jdk
    • 交互式切换:sudo update-alternatives --config java
    • 验证:java -version
    • 说明:该方式由系统统一管理 /usr/bin/java 的符号链接,适合全局或会话级切换。
  • 使用版本管理器 SDKMAN!(多版本一键安装与切换)
    • 安装:curl -s “https://get.sdkman.io” | bash && source “$HOME/.sdkman/bin/sdkman-init.sh”
    • 安装 JDK:sdk install java 17.0.9-tem
    • 切换:sdk use java 11.0.21-open;设为默认:sdk default java 11.0.21-open
    • 说明:支持多厂商 JDK(OpenJDK、Temurin、Zulu 等),便于按项目快速切换。
  • 使用 jenv(项目级与全局版本切换)
    • 安装:git clone https://github.com/jenv/jenv.git ~/.jenv
    • 配置 shell:echo ‘export PATH=“$HOME/.jenv/bin:$PATH”’ >> ~/.bashrc && echo ‘eval “$(jenv init -)”’ >> ~/.bashrc && source ~/.bashrc
    • 添加 JDK:jenv add /usr/lib/jvm/java-11-openjdk-amd64
    • 切换:jenv global 11.0;或进入项目目录 jenv local 8.0
    • 说明:提供 global/local 作用域,适合多项目并行开发。
  • 手动配置 JAVA_HOME(脚本或项目级)
    • 在 ~/.bashrc 或项目脚本中设置:export JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64;export PATH=$JAVA_HOME/bin:$PATH
    • 生效:source ~/.bashrc
    • 说明:简单直接,便于在 CI 脚本或项目目录中快速切换。

三 代码版本管理

  • 安装与初始化:sudo apt install git;git config --global user.name “Your Name”;git config --global user.email “you@example.com”
  • 基本流程:git init;git add .;git commit -m “init”;git remote add origin ;git push -u origin main
  • 协作要点:使用分支开发(feature/、bugfix/)、Pull Request 代码审查、.gitignore 忽略 target/、.idea/、*.log 等。

四 构建与发布版本管理

  • 使用 Maven 管理版本
    • pom.xml 中设置版本:1.2.3
    • 常用命令:mvn versions:set -DnewVersion=1.2.4-SNAPSHOT;mvn versions:use-latest-versions;mvn clean package;mvn deploy
    • 说明:支持版本号自动升级、依赖更新与多环境打包。
  • 使用 Gradle 管理版本
    • gradle.properties 中:version=1.2.3
    • 常用命令:./gradlew build;./gradlew publish
    • 说明:结合插件(如 maven-publish、bintray)完成发布流程。

五 项目级最佳实践

  • 在代码库根目录维护 .java-version.sdkmanrc,写入所需版本(如 11.0.21-open17.0.9-tem),配合 jenv 或 SDKMAN! 的自动切换能力,保证“拉代码即用”的一致性。
  • 在 CI(如 GitHub Actions、GitLab CI)中显式设置 JDK:
    • SDKMAN!:uses: sdkman/sdkman-action@v1 with: java: ‘17.0.9-tem
    • 或直接安装:actions/setup-java@v4 with: java-version: ‘17’ distribution: ‘temurin
  • 统一团队规范:在仓库中固化 Java 版本构建工具版本编码/格式化规则(如 EditorConfig、Spotless),减少“在我机器上能跑”的问题。

0