本教程介绍如何使用Jenkins和Maven构建简单的Java应用。
如果你使用Maven开发Java应用,但刚接触CI/CD;或者已经了解这些概念,却不知道如何用Jenkins构建应用,本教程适合你。
GitHub中的示例Java应用输出Hello world!,并附带用于确认主程序行为的单元测试。测试结果保存为JUnit XML报告。
预计时间:满足下面的准备条件后,完成教程约需20到40分钟。实际时间取决于机器速度,以及是否已经安装Docker和Docker Compose。
可以随时暂停教程,之后从上次位置继续。
确保本机已安装Git。
准备条件
需要以下环境:
-
一台运行macOS、Linux、Windows或带Linux的Chromebook的机器,至少具备:
-
2GB内存。
-
2GB用于Jenkins的磁盘空间。
-
-
安装以下软件:
Fork并克隆示例仓库
将示例Java应用的源码仓库Fork到自己的GitHub账户,再将Fork克隆到本地,以取得“Hello world!”应用。
-
确保已登录GitHub。没有账户时,可在GitHub免费注册。
-
将simple-java-maven-app Fork到自己的GitHub账户。需要帮助时,参阅GitHub的Fork仓库文档。
-
将Fork后的
simple-java-maven-app克隆到本机。下面两种方式任选其一,其中<your-username>表示操作系统用户名。-
如果已安装GitHub Desktop:
-
在GitHub的Fork仓库中选择Code → Open with GitHub Desktop。
-
在GitHub Desktop的Clone a Repository窗口点击Clone前,按操作系统确认Local Path:
-
macOS:
/Users/<your-username>/Documents/GitHub/simple-java-maven-app -
Linux:
/home/<your-username>/GitHub/simple-java-maven-app -
Windows:
C:\Users\<your-username>\Documents\GitHub\simple-java-maven-app
-
-
-
或者使用命令行:
-
打开终端,使用
cd进入对应目录:-
macOS:
/Users/<your-username>/Documents/GitHub/ -
Linux:
/home/<your-username>/GitHub/ -
Windows:
C:\Users\<your-username>\Documents\GitHub\。这里使用Git Bash窗口,不使用普通Microsoft命令提示符。
-
-
运行以下命令克隆Fork,将
YOUR-GITHUB-ACCOUNT-NAME替换为自己的GitHub账户名:git clone https://github.com/YOUR-GITHUB-ACCOUNT-NAME/simple-java-maven-app
-
-
启动Jenkins控制器
-
克隆quickstart-tutorials仓库,取得为本教程定制的Jenkins部署。
-
克隆后进入
quickstart-tutorials目录,执行:docker compose --profile maven up -d以运行本例。
-
容器成功运行后,可用
docker compose ps确认,通过http://localhost:8080访问控制器。
如果无法在本机安装Docker Compose,原文还提供以下云端运行方案:
-
GitHub Codespaces(原文推荐):在quickstart-tutorials仓库点击Code → Codespaces → Create codespace on master。原文列出的免费额度为每月60小时;实际额度以服务条款为准。Codespace启动后自动执行设置,并显示包含操作指引的欢迎消息。
-
GitPod:通过此链接打开工作区,并关联GitHub账户。原文列出的额度为每月50小时免费使用;实际额度以服务条款为准。
使用本教程环境的用户名admin和密码admin登录。
在Jenkins中创建流水线项目
-
在Jenkins左上角Dashboard下选择New Item。
-
在Enter an item name中填写流水线项目名。
-
必要时向下滚动,选择Pipeline,再点击页面末尾的OK。
-
可选填写流水线Description。
-
在左侧选择Pipeline。
-
将Definition设为Pipeline script from SCM,指示Jenkins从源码管理系统取得流水线,即你Fork后的Git仓库。
-
在SCM中选择Git。
-
在Repositories/Repository URL填写仓库URL,可从GitHub仓库主页的绿色Code按钮取得。
-
点击页面末尾的Save。接下来创建Jenkinsfile,并提交到本地克隆的Git仓库。
使用Jenkinsfile创建初始流水线
现在创建流水线,让Jenkins通过Maven自动构建Java应用。
流水线保存在Jenkinsfile中,并提交到本地simple-java-maven-app仓库。
这就是“流水线即代码”的基础:将持续交付流水线视为应用的一部分,像其他代码一样版本管理和评审。更多内容见用户手册的Pipeline和使用Jenkinsfile章节。
先创建初始流水线:下载Maven Docker镜像,将其作为容器运行,并构建Java应用。加入Build阶段来编排这一过程。
-
用文本编辑器或IDE,在本地
simple-java-maven-app仓库根目录创建并保存Jenkinsfile。 -
将以下声明式流水线代码复制到文件中:
pipeline { agent any stages { stage('Build') { (1) steps { sh 'mvn -B -DskipTests clean package' (2) } } } } -
保存Jenkinsfile并提交。在
simple-java-maven-app目录运行:-
git add . -
git commit -m "Add initial Jenkinsfile" -
运行
git push,把更改推送到GitHub上的Fork,以供Jenkins读取。
-
-
在项目左侧选择Build Now。Jenkins克隆
simple-java-maven-app仓库后会: -
先将项目排队,等待在代理上运行。
-
在代理上执行Jenkinsfile中的Build阶段。
期间Maven会下载构建Java应用所需的各种构件,最终保存在Jenkins本地Maven仓库。

点击#1查看构建详情,包括排队时间与运行时间。
点击左侧Pipeline Overview查看流水线阶段。
选择Build阶段查看详情;点击绿色maven区域可查看mvn输出。
点击左上角Maven tutorial,或你实际设置的项目名,返回流水线主页。
添加测试阶段
-
回到编辑器或IDE,打开Jenkinsfile。
-
在Build阶段之后粘贴以下声明式流水线内容:
stage('Test') { steps { sh 'mvn test' } post { always { junit 'target/surefire-reports/*.xml' } } }最终文件如下:
pipeline { agent any stages { stage('Build') { steps { sh 'mvn -B -DskipTests clean package' } } stage('Test') { (1) steps { sh 'mvn test' (2) } post { always { junit 'target/surefire-reports/*.xml' (3) } } } } } -
保存并提交Jenkinsfile。在仓库目录运行:
-
git stage . -
git commit -m "Add 'Test' stage" -
运行
git push将更改推送到GitHub Fork,以供Jenkins读取。
-
-
在Jenkins返回Dashboard,再进入Maven Tutorial,点击Build Now发起构建。
-
稍后Stage View会出现新的Test列。

-
在左侧Build History中点击#2或最新构建编号,查看详情。
若自上次运行流水线后Docker没有重启,Build阶段通常无需再次下载Maven构件,因此这次运行会快得多。
点击Pipeline Overview查看阶段。

留意新增的Test阶段,点击其勾选标记可查看该阶段输出。

添加最终交付阶段
-
回到编辑器或IDE,打开Jenkinsfile。
-
在Test阶段之后粘贴以下声明式流水线内容:
stage('Deliver') { steps { sh './jenkins/scripts/deliver.sh' } }加入
skipStagesAfterUnstable选项,结果如下:pipeline { agent any options { skipStagesAfterUnstable() } stages { stage('Build') { steps { sh 'mvn -B -DskipTests clean package' } } stage('Test') { steps { sh 'mvn test' } post { always { junit 'target/surefire-reports/*.xml' } } } stage('Deliver') { (1) steps { sh './jenkins/scripts/deliver.sh' (2) } } } }1 定义新的Deliver阶段,显示在Jenkins界面中。 2 此sh步骤运行仓库根目录下 jenkins/scripts/deliver.sh脚本,可查看该文件了解更多。通常应保持Jenkinsfile等流水线代码简洁,将较复杂的构建步骤,尤其包含两步以上操作的阶段,放入独立Shell脚本,例如deliver.sh,以便维护。 -
保存更新后的Jenkinsfile,并提交到本地仓库。
-
git stage . -
git commit -m "Add 'Deliver' stage" -
运行
git push将更改推送到GitHub Fork,以供Jenkins读取。
-
-
必要时登录Jenkins,返回Dashboard,再进入Maven tutorial;也可直接回到该项目。
-
点击左侧Build Now。稍后Stage View会出现Deliver列。

-
在左侧Build History中点击#3或最新构建编号查看详情。
点击Pipeline Overview,再点击Deliver的绿色勾选标记和第一个绿色区域,应看到类似下面的输出,末尾展示Java应用的执行结果。

-
点击左上角Maven tutorial,再点击左侧Stages,可按时间倒序查看历史流水线运行。
总结
至此,已完成用Jenkins和Maven构建简单Java应用的步骤。
Build、Test和Deliver三个阶段,是在Jenkins中构建更复杂Java/Maven应用,以及与其他技术栈集成的基础。
Jenkins具有很强的可扩展性,可以通过修改与配置处理构建编排和自动化的多种需求。
更多内容可查看:
清理环境
完成教程后,应清理环境,避免影响之后的其他教程。
停止容器并移除关联卷:
docker compose --profile maven down -v --remove-orphans
此命令为下一个项目清理环境。
|
|
原文:使用Maven构建Java应用;作者:Jenkins文档贡献者。版本或日期:官方原文抓取版本。原文及源码权利归相应权利人所有。



点击左上角Maven tutorial,再点击左侧Stages,可按时间倒序查看历史流水线运行。









暂无评论内容