服务公告
Java:Java自动化构建
发布时间:2026-04-22 11:03
搞过的人都知道,最烦的是每次发版手动打包编译,一不留神就搞错版本,测试环境跑得好好的生产崩了。今天聊聊怎么用Jenkins+Maven搭一套自动化构建流水线,让你提交代码就能自动跑构建、跑测试、打包镜像,人工干预越少越好。一、前言
手动构建的痛:代码版本对不上、依赖库版本混乱、测试漏跑、发布全靠人肉。本教程围绕Jenkins+Maven讲解如何搭建Java自动化构建流水线,覆盖代码检出→编译→测试→打包→镜像推送全流程,实现提交即构建的CI/CD闭环。二、操作步骤
步骤1:服务器环境准备 | 步骤2:创建Maven项目结构 | 步骤3:编写示例代码和单元测试 | 步骤4:本地验证Maven构建流程 | 步骤5:安装并配置Jenkins | 步骤6:创建Jenkins构建任务 | 步骤7:配置构建产物的归档和通知 | 步骤8:验证完整流水线
步骤1:服务器环境准备
先看下服务器上Java和Maven装了没,没装的要装上: ```bash # 检查Java版本(CentOS/RHEL路径) java -version openjdk version "1.8.0_292" ``` ```bash # 检查Maven版本 mvn -version Apache Maven 3.6.3 Maven home: /usr/share/maven Java version: 1.8.0_292, vendor: Red Hat, Inc. ``` 如果没装,执行以下命令(CentOS/RHEL): ```bash # CentOS/RHEL 安装Maven sudo yum install -y java-1.8.0-openjdk java-1.8.0-openjdk-devel maven ``` Ubuntu环境下: ```bash # Ubuntu 安装Maven sudo apt update && sudo apt install -y openjdk-8-jdk maven ```步骤2:创建Maven项目结构
建个标准Maven项目,顺便跑个Hello World验证基础流程: ```bash # 创建项目目录 mkdir -p /opt/app/myapp && cd /opt/app/myapp # 创建标准Maven目录结构 mkdir -p src/main/java/com/example src/main/resources src/test/java # 创建pom.xml cat > pom.xml << 'EOF'步骤3:编写示例代码和单元测试
来点真实的代码和测试用例: ```bash # 创建主类 cat > src/main/java/com/example/App.java << 'EOF' package com.example; public class App { public String getMessage() { return "Hello from automated build!"; } public int add(int a, int b) { return a + b; } } EOF # 创建测试类 cat > src/test/java/com/example/AppTest.java << 'EOF' package com.example; import org.junit.Test; import static org.junit.Assert.*; public class AppTest { @Test public void testGetMessage() { App app = new App(); assertEquals("Hello from automated build!", app.getMessage()); } @Test public void testAdd() { App app = new App(); assertEquals(5, app.add(2, 3)); } } EOF ```步骤4:本地验证Maven构建流程
先在服务器上手动跑一遍,确保能成功构建再上Jenkins: ```bash # 清理并编译 mvn clean compile # 预期输出片段 [INFO] Scanning for projects... [INFO] [INFO] ------------------------< com.example:myapp >------------------------- [INFO] Building myapp 1.0.0-SNAPSHOT [INFO] --------------------------------[ jar ]--------------------------------- [INFO] --- maven-clean-plugin:3.1.0:clean (default-clean) @ myapp --- [INFO] Deleting /opt/app/myapp/target [INFO] --- maven-resources-plugin:3.1.0:resources (default-resources) @ myapp --- [INFO] --- maven-compiler-plugin:3.8.1:compile (default-compile) @ myapp --- [INFO] Changes detected - recompiling the module! [INFO] Compiling 1 source file to /opt/app/myapp/target/classes [INFO] BUILD SUCCESS [INFO] ------------------------------------------------------------------------ [INFO] Total time: 5.234 s ``` 继续跑单元测试和打包: ```bash # 运行测试并打包 mvn test package # 预期输出片段 [INFO] --- maven-surefire-plugin:2.22.2:test (default-test) @ myapp --- [INFO] [INFO] ------------------------------------------------------- [INFO] T E S T S [INFO] ------------------------------------------------------- [INFO] Running com.example.AppTest [INFO] Tests run: 2, Failures: 0, Errors: 0, Skipped: 0 [INFO] [INFO] --- maven-jar-plugin:3.2.0:jar (default-jar) @ myapp --- [INFO] Building jar: /opt/app/myapp/target/myapp-1.0.0-SNAPSHOT.jar [INFO] BUILD SUCCESS [INFO] Total time: 12.567 s ```步骤5:安装并配置Jenkins
上了Jenkins才算真正的自动化。不同系统装法不一样: CentOS/RHEL: ```bash # 安装Jenkins(先装Java) sudo yum install -y java-1.8.0-openjdk sudo wget -O /etc/yum.repos.d/jenkins.repo https://pkg.jenkins.io/redhat/jenkins.repo sudo rpm --import https://pkg.jenkins.io/redhat/jenkins.io.key sudo yum install -y jenkins sudo systemctl start jenkins sudo systemctl enable jenkins ``` Ubuntu: ```bash # Ubuntu安装Jenkins wget -q -O - https://pkg.jenkins.io/debian/jenkins.io.key | sudo apt-key add - sudo sh -c 'echo deb http://pkg.jenkins.io/debian/ binary/ > /etc/apt/sources.list.d/jenkins.list' sudo apt update sudo apt install -y openjdk-8-jdk jenkins sudo systemctl start jenkins sudo systemctl enable jenkins ``` Jenkins装好后初始化解锁: ```bash # 获取初始管理员密码 sudo cat /var/lib/jenkins/secrets/initialAdminPassword # 预期输出 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx ``` 浏览器访问 http://YOUR_SERVER_IP:8080,输入密码安装推荐插件。步骤6:创建Jenkins构建任务
在Jenkins里建个Freestyle项目,配置构建流水线: 源码管理:填Git仓库地址,配置好Credentials 构建触发器:勾选 "Poll SCM" 或者 "GitHub hook trigger for GITScm polling",实现代码提交自动触发 构建步骤 - Execute shell(CentOS/RHEL和Ubuntu通用): ```bash # 进入工作目录 cd /var/lib/jenkins/workspace/YOUR_JOB_NAME # 设置Maven国内镜像(加速依赖下载) mkdir -p ~/.m2 cat > ~/.m2/settings.xml << 'SETTINGS'步骤7:配置构建产物的归档和通知
Jenkins项目配置里添加"构建后操作": 归档构建产物:填 `target/*.jar, target/*.war` 邮件通知(可选):配置SMTP,收件人填团队邮箱,触发条件选"总是"或"失败时" 钉钉/企业微信通知:安装对应插件,配置机器人Webhook,实时推送构建结果到群步骤8:验证完整流水线
模拟代码提交触发构建: ```bash # 在源码目录模拟代码更新 cd /var/lib/jenkins/workspace/YOUR_JOB_NAME git add -A git commit -m "chore: trigger automated build" git push origin main ``` 然后去Jenkins控制台看构建历史,或者刷新GitHub/GitLab看Webhook触发记录。构建成功后检查: ```bash # 检查归档产物 ls -lh /var/lib/jenkins/artifacts/ # 检查单元测试报告 cat /var/lib/jenkins/workspace/YOUR_JOB_NAME/target/surefire-reports/*.txt ```三、常见问题FAQ
Q1:构建的时候Maven下载依赖巨慢,有什么办法提速? A1:别用默认中央仓库,换国内镜像源。创建 `~/.m2/settings.xml`,配置阿里云仓库: ```xml四、总结
Java自动化构建的核心就三件事:触发自动化、流程标准化、产物可追溯。用Jenkins做调度引擎,Maven负责构建和测试,Git做版本控制,三者配合实现提交即构建。关键点总结: 核心要点:- 环境一致性:Jenkins机器和本地开发环境JDK、Maven版本要严格统一,不然会出现"本地OK线上崩"
- 依赖加速:国内用阿里云镜像,团队用Nexus私服,二次构建速度能快3-5倍
- 测试前置:单元测试要跑在打包前面,测试失败了直接终止构建,不往下走
- 产物管理:构建产物要归档、备份、版本化,方便回滚和问题追溯
- 通知机制:构建结果及时推送,失败要能第一时间通知到负责人
- Maven进阶:《Maven实战》详细讲解了生命周期、依赖管理、私服搭建
- Jenkins Pipeline:推荐学习Jenkinsfile写法,用代码描述流水线,更易维护和版本控制
- SonarQube集成:在Jenkins里加上代码质量扫描卡点,代码覆盖率低于阈值不允许合并
- 容器化:用Dockerfile把应用和JRE打包成镜像,实现"一次构建到处运行",配合K8s做灰度发布
相关推荐
上一篇: Trae:安装配置
下一篇: GitLab:GitLab安全加固