第1章 环境搭建与工具链准备

审批流动态配置系统的开发环境需要以JDK为核心运行时,以Maven/Gradle为构建管理工具,以Git作为版本协作基础,配合IDE和容器化部署方案。本章完整介绍从零搭建可复现开发环境所需的工具链版本、安装步骤、配置要点以及常见踩坑清单。

目标环境概览:JDK 17 LTS + Maven 3.9.x + Git 2.40+ + IntelliJ IDEA(Community/Ultimate)+ Spring Boot 3.2.x + MySQL 8.0 / PostgreSQL 15 + Docker Compose(可选)。所有组件均支持跨平台(Windows/macOS/Linux),下文以 Ubuntu 22.04 为例给出精确命令。
审批流开发环境工具链架构 Spring Boot 3.2(审批流应用) Maven 3.9(构建管理) Git 2.40(版本控制) IDE(IntelliJ IDEA) JDK 17 LTS(运行时) MySQL / PostgreSQL Docker + Docker Compose 所有工具通过环境变量 + PATH 统一管理

原理:为什么要精确定位工具链版本

审批流动态配置的核心是运行时元数据驱动,依赖Spring Boot 3.x的自动配置、Spring Data JPA和Activiti/Flowable引擎。低版本JDK(8/11)无法支持虚拟线程和密封类,高版本Maven(3.8+)对镜像和仓库策略有严格限制。使用统一版本可避免类冲突、注解扫描异常和数据库驱动不兼容。

实现流程(6步概览)

步骤操作内容产出物
1安装JDK 17并配置JAVA_HOMEjava -version 显示17.x
2安装Maven 3.9.x并设置镜像mvn -v 显示3.9.x;自定义~/.m2/settings.xml
3安装Git并配置ssh密钥git --version;ssh -T git@github.com 成功
4安装IntelliJ IDEA + 插件(Lombok、JPA Buddy)可导入Maven项目并编译
5通过Spring Initializr创建脚手架项目包含spring-boot-starter-web, jpa, spring-security等依赖
6初始化数据库脚本(MySQL/PostgreSQL),可选启动Docker Compose数据库连接成功,Docker容器正常运行

逐项安装与配置

1. JDK 17 LTS

推荐使用 Eclipse Temurin(Adoptium)发行版,许可证友好且长期支持。

# Ubuntu / Debian
sudo apt update
sudo apt install wget apt-transport-https gnupg -y
wget -qO - https://packages.adoptium.net/artifactory/deb-key.gpg | sudo gpg --dearmor -o /usr/share/keyrings/adoptium.gpg
echo "deb [signed-by=/usr/share/keyrings/adoptium.gpg] https://packages.adoptium.net/artifactory/deb $(lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/adoptium.list
sudo apt update
sudo apt install temurin-17-jdk -y

# 验证
java -version
# 输出应为 openjdk version "17.0.10" 2024-01-16 LTS
Windows / macOS 提示:macOS 可使用 brew install --cask temurin@17;Windows 下载 .msi 安装包后务必手动添加 JAVA_HOME 环境变量到 C:\Program Files\Eclipse Adoptium\jdk-17.0.10-hotspot\,并将其 bin 目录加入 PATH。

2. Maven 3.9.x

# 下载并解压
wget https://dlcdn.apache.org/maven/maven-3/3.9.8/binaries/apache-maven-3.9.8-bin.tar.gz
sudo tar xzf apache-maven-3.9.8-bin.tar.gz -C /opt
sudo ln -s /opt/apache-maven-3.9.8 /opt/maven

# 配置环境变量(写入 ~/.bashrc 或 /etc/profile.d/maven.sh)
export MAVEN_HOME=/opt/maven
export PATH=$MAVEN_HOME/bin:$PATH

# 验证
mvn -v

推荐配置阿里云镜像加速:~/.m2/settings.xml

<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd">
    <mirrors>
        <mirror>
            <id>aliyunmaven</id>
            <mirrorOf>central</mirrorOf>
            <name>阿里云公共仓库</name>
            <url>https://maven.aliyun.com/repository/central</url>
        </mirror>
    </mirrors>
</settings>

3. Git 2.40+

sudo apt install git -y
git config --global user.name "Your Name"
git config --global user.email "your.email@example.com"
git config --global core.autocrlf input   # Linux/macOS
git config --global core.editor vim
SSH 快速配置:ssh-keygen -t ed25519 -C "your.email@example.com",将公钥 ~/.ssh/id_ed25519.pub 添加到 GitHub/GitLab。

4. IntelliJ IDEA 与插件

从 JetBrains 官网 下载 Community(免费)或 Ultimate(推荐,支持 Spring)。必装插件:Lombok(注解处理)、JPA Buddy(实体映射可视化)、SonarLint(代码质量)。导入 Maven 项目时注意设置 File → Settings → Build, Execution, Deployment → Build Tools → Maven 中的 Maven home path 指向 /opt/maven 或自定义路径。

5. Spring Boot 脚手架创建

使用 Maven 命令行或 Spring Initializr 网页生成标准项目结构。推荐命令行方式,便于自动化:

curl https://start.spring.io/starter.tgz \
  -d type=maven-project \
  -d language=java \
  -d bootVersion=3.2.4 \
  -d baseDir=approval-workflow \
  -d groupId=com.example \
  -d artifactId=approval-workflow \
  -d packageName=com.example.approval \
  -d dependencies=web,data-jpa,mysql,postgresql,security,actuator \
  -d javaVersion=17 \
  | tar xz

cd approval-workflow
mvn compile   # 首次构建,下载依赖

生成的 pom.xml 自动包含所需起步依赖,后续章节将在此脚手架基础上添加审批流引擎配置。

6. 数据库初始化脚本(MySQL + PostgreSQL)

创建数据库和用户,后续章节的 JPA 实体会自动建表,但建议提前执行基础 DDL:

-- MySQL 8.0
CREATE DATABASE IF NOT EXISTS approval_flow DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE USER 'app_user'@'%' IDENTIFIED BY 'App@2024';
GRANT ALL PRIVILEGES ON approval_flow.* TO 'app_user'@'%';
FLUSH PRIVILEGES;

-- PostgreSQL 15
CREATE DATABASE approval_flow;
CREATE USER app_user WITH ENCRYPTED PASSWORD 'App@2024';
GRANT ALL PRIVILEGES ON DATABASE approval_flow TO app_user;

如果使用 Docker Compose 快速启动数据库:

# docker-compose.yml
version: '3.8'
services:
  mysql:
    image: mysql:8.0
    environment:
      MYSQL_ROOT_PASSWORD: root123
      MYSQL_DATABASE: approval_flow
    ports:
      - "3306:3306"
    volumes:
      - mysql_data:/var/lib/mysql
volumes:
  mysql_data:

启动命令:docker compose up -d。

调试验证

运行下面的命令组合确认全部工具准备就绪:

java -version
mvn -version
git --version
# 测试 Maven 编译脚手架项目
cd approval-workflow
mvn clean compile -DskipTests   # 应输出 BUILD SUCCESS
# 测试数据库连接(使用 Spring Boot 数据源验证)
mvn spring-boot:run -Dspring-boot.run.profiles=dev   # 控制台无连接池异常即可

常见错误

错误现象根因解决方案
java.lang.UnsupportedClassVersionErrorMaven 使用的 Java 版本低于 17检查 JAVA_HOME 是否指向 JDK 17,mvn -v 中 Java version 必须为 17.x
Maven 构建超时 / 无法下载依赖镜像未配置或镜像 URL 失效确认 settings.xml 中 mirrorOf 正确,建议改用 https://maven.aliyun.com/repository/central
Git 提交时 CRLF 警告core.autocrlf 设置与操作系统不匹配Linux/macOS 设为 input,Windows 设为 true
Spring Boot 启动报 Failed to configure DataSource数据库未运行或连接信息配置错误检查 application-dev.yml 中的 spring.datasource.url 和端口,Docker 容器是否健康
IDE Lombok 不生效未启用注解处理IntelliJ:Settings → Build → Compiler → Annotation Processors → 勾选 Enable annotation processing

性能与稳定性优化

  • Maven 并行构建:在 ~/.m2/settings.xml 或 pom.xml 中添加 -T 4 参数(利用多核 CPU):mvn clean install -T 4。
  • 本地 Maven 仓库缓存:首次构建后保留 ~/.m2/repository,避免重复下载。可通过 mvn dependency:resolve -DskipTests 提前预热。
  • Docker 资源限制:在 docker-compose.yml 中设置 deploy.resources.limits.memory: 512M 防止数据库容器占用过多内存。
  • IDE 内存调优:IntelliJ IDEA 编辑 Help → Edit Custom VM Options,增加 -Xms1024m -Xmx2048m,避免大型项目卡顿。
  • Spring Boot DevTools 热更新:加入依赖 spring-boot-devtools,修改实体或配置后自动重启,减少手动编译时间。
推荐检查清单:在开始编写审批流逻辑之前,建议执行一次全链路测试 —— 启动数据库容器 → 运行 mvn clean verify → 使用 curl http://localhost:8080/actuator/health 查看应用健康状态。确保没有红色异常日志后再进入下一章。