CI&CD落地实践6-Jenkins接入maven构建后端springboot项目
bigegpt 2025-07-02 18:25 5 浏览
前言
在前面一篇《CI&CD落地实践5-Jenkins分布式环境搭建及多节点运行》中,我们介绍了如何在Windows及Linux系统上部署Jenkins从节点,本章节介绍如何在Jenkins创建maven项目,利用Jenkins从节点来构建后端springboot项目。
一、环境准备
1.Jenkins执行机搭建maven环境
1)配置maven环境变量
当前执行机为Windows系统,需要做以下工作:
① 将
apache-maven-3.6.3-bin.zip解压缩;
② 在环境变量path中添加maven的bin目录:E:\apache-maven-3.6.3\bin
2)修改maven配置文件
配置setting.xml文件:
① mirror 镜像仓库配置
本地镜像仓库地址为:http://192.168.1.140:8081
<mirrors>
<mirror>
<id>wucheng-maven</id>
<name>wucheng maven</name>
<url>http://192.168.1.140:8081/repository/maven-public/</url>
<mirrorOf>*</mirrorOf>
</mirror>
<!-- mirror
| Specifies a repository mirror site to use instead of a given repository. The repository that
| this mirror serves has an ID that matches the mirrorOf element of this mirror. IDs are used
| for inheritance and direct lookup purposes, and must be unique across the set of mirrors.
|
<mirror>
<id>mirrorId</id>
<mirrorOf>repositoryId</mirrorOf>
<name>Human Readable Name for this Mirror.</name>
<url>http://my.repository.com/repo/path</url>
</mirror>
-->
</mirrors>
② 配置双maven仓库
一个是本地仓库,一个阿里云仓库
<profiles>
<profile>
<!-- id必须唯一 -->
<id>ali-maven</id>
<repositories>
<repository>
<!-- id必须唯一 -->
<id>alimaven</id>
<!-- 仓库的url地址 -->
<url>http://maven.aliyun.com/nexus/content/groups/public/</url>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>true</enabled>
<updatePolicy>always</updatePolicy>
</snapshots>
</repository>
</repositories>
</profile>
<profile>
<!-- id必须唯一 -->
<id>wucheng-maven</id>
<repositories>
<repository>
<!-- id必须唯一 -->
<id>nexus</id>
<!-- 仓库的url地址 -->
<url>http://192.168.2.140:8081/repository/maven-public/</url>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>true</enabled>
<updatePolicy>always</updatePolicy>
</snapshots>
</repository>
</repositories>
</profile>
</profiles>
<activeProfiles>
<activeProfile>ali-maven</activeProfile>
<activeProfile>wucheng-maven</activeProfile>
</activeProfiles>
2.安装相关插件
1)maven插件
用于创建maven项目,进行maven构建
2)SVN插件
后台项目代码是通过SVN管理,所以需要先安装subversion插件,直接搜索subversion安装即可。
3)企业微信提醒插件
搜索Qy Wechat Notification Plugin安装,用于构建后的企业微信提醒
二、Jenkins接入maven项目
1.新建maven项目
只有安装maven插件后,在新建项目的时候才能看到Maven project,否则不显示:
① 指定运行节点
在General中勾选“限制项目的运行节点”,标签表达式填写前面创建从节点时所填写的标签。
注意:需要在配置该从节点时,指定JDK、Maven等工具的位置:
② 配置源码管理-Source Code Management
在 Source Code Management 中选择SVN(注意:SVN也要先提前安装Subversion插件才能看到)
③ 配置构建触发器-Build Triggers
保持默认
④ 配置构建-build
- Root POM:项目的pom.xml文件路径,如果是在根目录,则只需要填pom.xml;
- Goals and options:目标和选项,“clean package -Dmaven.test.skip=true”的作用是打包前清理项目、跳过测试;
⑤ 配置构建后的步骤-Post-build Actions
需要先安装插件,前面提到过,否则不会出现以下选项
Post-build Actions 中选择“企业微信通知”,当然也可以选邮件通知等等:
注意:这一步需要先在企微要通知的群中添加一个群机器人,将群机器人的webhook地址复制到上述的Webhook地址栏中
3.执行构建
点击立即构建,即可执行构建操作。但事情往往不会那么顺利,我第一次构建就报错了:
通过控制台日志可以看出,SVN拉取代码都没问题,已经将SVN代码拉到了Jenkins项目的工作目录中:
但是在解析pom.xml文件、安装依赖包时报错了。报错信息中提到的“
com.wucheng.app:event-service:1.1-SNAPSHOT”是本地工程编译后生成的包,不是第三方依赖包。由于对这个项目结构、依赖关系我也不清楚(目前能解释清楚的人所剩无几),所以具体怎么解决说实话我也不知道。
三、曲线救国方案实现
我决定换一种思路来解决,我给它取名曲线救国方案,如下:
- 先在我本地电脑上下载代码,在IDEA中打开,然后安装好依赖,并测试能不能编译通过;
- 若能编译通过并打包成功,再将依赖库上传至Jenkins执行机的maven本地仓库目录(这也是为什么选择Windows环境上部署Jenkins作为从节点的原因之一);
③ 在Jenkins执行机的maven设置文件settings中指定maven本地仓库目录;
这样Jenkins在执行构建的时候就不用再安装一堆依赖了。但这样做有个明显的弊端,就是如果涉及到的项目比较多,需要手动去识别每个项目所用到的依赖,然后分别上传,否则统一将本地依赖库打包上传覆盖Jenkins机器的maven本地依赖仓库,可能会造成其他项目的依赖库丢失。
需要注意以下几点:
① 尽可能保证本地电脑的JDK版本与Jenkins执行机的版本一致;
② 尽可能保证本地电脑的maven版本与Jenkins执行机的版本一致;
1.IDEA安装
略
2.maven安装与配置
我的办公电脑也是Windows系统,所以与前面Jenkins执行机配置maven的过程一致。
3.SVN拉取代码
① SVN检出到本地
② 填写认证信息
拉取后的项目:
4.IDEA中项目配置
打开项目
IDEA中配置JDK
IDEA中配置maven
5.安装依赖库
从IDEA打开的项目目录可以看出,这个项目是由多个工程组合而成,根目录下并无pom.xml文件,我们需要将最外层、也就是统一管理所有工程依赖的pom.xml文件添加到maven中,然后依次为各个工程安装依赖库:
注意:安装过程中由于依赖顺序和库的类型不同(有的工程依赖外部包、有的工程依赖内部工程打的包),可能会出现各种依赖安装报错,根据报错提示注释掉相应文件中的相应依赖配置、再次安装即可。
安装成功如下:
所有依赖包安装成功后,都存放在IDEA中maven配置指定的目录下:
6.编译项目
这个项目工程庞大,依赖库极多,后来还是在这个项目的开发人员的帮助下,才装完所有的依赖,最终编译通过。不得不说,整个依赖库的安装过程还是花费了不少精力。所以,要么是个人对项目非常了解,要么是能找到相关研发、并且愿意帮助,否则想要搞定这种庞大项目的环境问题,还是非常困难。
四、Jenkins执行机maven配置
1.maven配置本地仓库目录
settings.xml配置文件中添加如下配置,用于指定本地maven仓库目录:
<localRepository>E:\maven-repository</localRepository>
2.上传maven依赖库至Jenkins执行机
将本地安装好的项目依赖库统一打包上传至Jenkins执行机设置的maven本地仓库中并解压。这样Jenkins执行机就得到了和我本地电脑一模一样的编译环境:
- JDK一致;
- Maven版本一致;
- Maven依赖仓库一致;
3.Jenkins构建
在主节点点击立即构建,首次构建的时间可能会有点长,因为要先执行拉取代码、生成本地工作目录等操作。构建成功:
确实是通过从节点“win188”执行:
小结
以上就是在Windows从节点上安装配置maven、Jenkins安装maven插件以及如何在Jenkins中创建maven项目构建后端项目的全部过程。理论上说无论是在Windows环境、Linux环境,只要环境确保正确、依赖能够正常安装,都能进行正常的构建操作。我是因为环境过于复杂,所以才出此“整体拷贝依赖仓库”这种下策。
当然此项目后续的流程还不算完,还可以将生成的jar包远程替换到开发、测试环境,以及重启服务等等操作,后面会再具体介绍。
相关推荐
- 如何使用Java API操作HDFS系统?(hdfs java api的常见环境准备?)
-
1.搭建项目环境打开Eclipse选择FileàNewàMavenProject创建Maven工程,选择“Createasimpleproject”选项,点击【Next】按钮,会进入“New...
- DataX写插件开发-集成阿里云RocketMQ
-
在上一期我们对datax进行了技术调研DataX数据异构、数据同步神器,这一次我们集成一个RocketMQ写插件,能够非常方便对将mysql数据同步到MQ中,下面来总结下具体步骤。1.下载datax源...
- 以SpringMVC+Shiro+Mybatis为核心开发的精简后台系统源码分享
-
项目说明源码获取方式:关注转发之后私信回复【源码】即可免费获取到以SpringMVC+Shiro+Mybatis为核心开发的精简后台基础系统。包含用户管理,角色管理,部门管理,权限管理,菜单管理,日志...
- 手把手教小伙伴们使用 Nginx 部署 TienChin 项目!
-
今天我就来手把手教小伙伴们部署TienChin项目,一起把这个项目跑起来,看看到底是个什么样的项目。小伙伴们知道,对于这种前后端分离的项目,我们在实际部署的时候,可以按照前后端分离的方式来部署,也...
- 推荐一款超棒的SpringCloud 脚手架项目
-
之前接个私活,在网上找了好久没有找到合适的框架,不是版本低没人维护了,在不就是组件相互依赖较高。所以我自己搭建一个全新spingCloud框架,里面所有组件可插拔的,集成多个组件供大家选择,喜欢哪个用...
- SpringCloud 微服务迁移到 Kubernetes 容器化完整流程
-
k8s容器部署流程具体步骤:第一步:熟悉SpringCloud微服务项目第二步:源代码编译构建第三步:构建项目镜像并推送到镜像仓库第四步:K8s服务编排第五步:部署服务所需的基础环境第六步:部署微服...
- SpringBoot 实现动态配置及项目打包部署上线
-
一、动态配置文件我们需要了解Spring动态指定配置文件的方式,来提高我们的部署效率。1.1、概述在实际企业开发中,开发环境、测试环境、生产环境通常采用不同的数据库等中间件的连接方式。如果此时我们按照...
- 3.5 源码安装ONOS1.3.0(源码包怎么安装)
-
ONOS是由ON.Lab使用Java及Apache实现发布的首款开源的SDN网络操作系统,主要面向服务提供商和企业骨干网。近日笔者在学习ONOS的过程中写下了这篇文章,希望可以对刚接触ONOS的同学们...
- jenkins+gitlab 实现自动化部署(jenkins配置git自动部署)
-
目录1、安装jdk,要记住安装路径2、安装maven,要记住安装路径3、安装git,要记住安装路径4、安装gitlab5、安装jenkins(centos7)创建安装目录下载通用war包启动和关闭Je...
- CI&CD落地实践6-Jenkins接入maven构建后端springboot项目
-
前言在前面一篇《CI&CD落地实践5-Jenkins分布式环境搭建及多节点运行》中,我们介绍了如何在Windows及Linux系统上部署Jenkins从节点,本章节介绍如何在Jenkins创建mave...
- 从0到1体验Jenkins+Docker+Git+Registry实现CI自动化发布
-
阅读目录:一、前言二、发布流程三、环境准备四、部署思路梳理五、三台机器上操作六、Git机器上操作七、Docker机器上操作八、Jenkins机器上操作九、上传JAVA项目代码到Git仓库十、Jenki...
- 微服务架构实战:使用Jenkins实现自动化构建
-
使用Jenkins实现自动化构建一个大型平台的微服务架构设计通常会产生很多项目工程,因此会有很多服务和应用需要部署,并且需要不断地迭代和更新,这是一个庞大的工程,所以我们需要借助自动化工具,实现各个微...
- Jenkins 自动化部署实例讲解(jenkins自动化部署git 项目)
-
前言你平常在做自己的项目时,是否有过部署项目太麻烦的想法?如果你是单体项目,可能没什么感触,但如果你是微服务项目,相信你应该是有过这种感触的。这种情况下,我一般会劝你了解一下Jenkins这个玩意...
- 多模块的微服务项目容器化与Git追踪发布记录
-
在使用了微服务后,一个项目往往由多个模块组成,而容器化发布的建议是单个容器尽量只运行单个进程。所以我们会把每个模块单独打包成镜像运行。如果每个模块都单独配置Dockerfile会让我们维护起来很麻烦。...
- 手把手教你使用 Jenkins+Docker 实现持续集成
-
作者:乐之终曲来源:https://blog.csdn.net/qq_37143673/对于Jenkins我只能用两个字形容,难用。就不过多吐槽了,本篇是基于docker环境的使用。1.安...
- 一周热门
- 最近发表
-
- 如何使用Java API操作HDFS系统?(hdfs java api的常见环境准备?)
- DataX写插件开发-集成阿里云RocketMQ
- 以SpringMVC+Shiro+Mybatis为核心开发的精简后台系统源码分享
- 手把手教小伙伴们使用 Nginx 部署 TienChin 项目!
- 推荐一款超棒的SpringCloud 脚手架项目
- SpringCloud 微服务迁移到 Kubernetes 容器化完整流程
- SpringBoot 实现动态配置及项目打包部署上线
- 3.5 源码安装ONOS1.3.0(源码包怎么安装)
- jenkins+gitlab 实现自动化部署(jenkins配置git自动部署)
- CI&CD落地实践6-Jenkins接入maven构建后端springboot项目
- 标签列表
-
- mybatiscollection (79)
- mqtt服务器 (88)
- keyerror (78)
- c#map (65)
- resize函数 (64)
- xftp6 (83)
- bt搜索 (75)
- c#var (76)
- mybatis大于等于 (64)
- xcode-select (66)
- mysql授权 (74)
- 下载测试 (70)
- linuxlink (65)
- pythonwget (67)
- androidinclude (65)
- logstashinput (65)
- hadoop端口 (65)
- vue阻止冒泡 (67)
- oracle时间戳转换日期 (64)
- jquery跨域 (68)
- php写入文件 (73)
- kafkatools (66)
- mysql导出数据库 (66)
- jquery鼠标移入移出 (71)
- 取小数点后两位的函数 (73)