记录使用jenkins配置maven,并且打包,部署,发布maven项目的过程
迪丽瓦拉
2025-05-28 23:57:23
0

专栏的前面几篇博客已经把jenkins和gitlab集成起来了,接着我们开始打包,部署发布maven项目

第一步 在jenkins容器中安装maven

首先在jenkins中安装maven,docker安装的maven默认安装了java,但是没有安装maven,所以这里我们需要自己进入到jenkins容器中,然后安装maven。
我这里的maven是自己在官网传送门下载的最新版maven3.9.0.tar.gz,
在这里插入图片描述

然后通过FileZilla Client传送到linux服务器,然后再通过docker cp传送到jenkins容器下进行安装的;
安装就是将解压后的maven直接放到某个目录下,我这里放到了/opt目录下。
然后到maven的conf目录下修改maven的setting.xml的内容,主要是修改本地仓库位置和远程仓库镜像(这里远程仓库使用的是阿里巴巴的)
在这里插入图片描述
在这里插入图片描述
最后我们需要配置maven的环境变量:
在这里插入图片描述

执行命令
source /etc/profile
mvn -v

如果成功输出了版本信息,表示maven已经安装完成。
接下来我们就需要在jenkins中的maven项目中配置相关信息了。不过这里有一点要先说明,就是首先要搭建好自己的一台远程服务器,具体的搭建过程这里就不再叙述。详细的搭建过程可看传送门。

第二步在jenkins中新建maven项目,并且配置maven项目相关的属性

首先我们需要进入到系统管理,然后配置maven相关的全局属性:
在这里插入图片描述
接着就配置 Publish over SSH,我这里配置的是用用户名和密码登陆的,这里的都是和远程服务器相关的。
在这里插入图片描述
这里配置完我们可以点击test connection测试一下,success的话就可以了。
接着我们可以在jenkins中新建一个maven项目:
在这里插入图片描述
然后配置maven项目相关的属性:
在这里插入图片描述
在这里插入图片描述

首先配置的是Jenkins拉去项目的源以及编译时的jdk版本(这里需要jenkins安装jdk-parameter插件才能使用多版本jdk)。
接着我们配置触发器和构建环境:
按照图中勾选即可
在这里插入图片描述
接着我们开始配置编译过程和ssh:
在这里插入图片描述
在这里插入图片描述
图中的exec command:

BASE_HOME=/root/data
JAR_NAME=Test-0.0.1-SNAPSHOT.jar
LOG_NAME=out.log
# 停止应用
ps -ef | grep $JAR_NAME | grep -v grep | awk '{print $2}' | xargs -i kill {}
# 备份日志
if [ -f $BASE_HOME/$LOG_NAME ]; thenmv $BASE_HOME/$LOG_NAME $BASE_HOME/$LOG_NAME.`date +%Y%m%d%H%M%S`
fi
# 备份jar包
if [ -f $BASE_HOME/$JAR_NAME ]; thencp $BASE_HOME/$JAR_NAME $BASE_HOME/$JAR_NAME.`date +%Y%m%d%H%M%S`
fi
#启动应用
nohup java -jar $BASE_HOME/$JAR_NAME &>$BASE_HOME/$LOG_NAME &

这里的表示我们在远程服务器的目录是/root/data。jenkins编译并打包完成,会将包自动发送到远程服务器的/root/data目录下,并且在此目录下自动发布并运行。
成功编译结果如下:
在这里插入图片描述
我们看到编译打包后的包也传送到了远程服务器上,并且运行了:
在这里插入图片描述
在这里插入图片描述

这里关于gitlab与Jenkins集成并且打包,部署maven项目的一整条流程就完成了。后续我们只要编码完成,把代码提交到gitlab后,直接手动在jenkins中点击编译部署即可。当然你也可以配置自动编译并发布,就是一旦提交到gitlab就立即自动发布,但是这种相对来讲在比较浪费资源,因为在实际生产中,如果公司没有review机制的话,我们会经常提交代码到gitlab,会导致Jenkins经常性的自动部署发布,很影响开发。所以一般配置手动打包发布即可。

相关内容

热门资讯

linux入门---制作进度条 了解缓冲区 我们首先来看看下面的操作: 我们首先创建了一个文件并在这个文件里面添加了...
C++ 机房预约系统(六):学... 8、 学生模块 8.1 学生子菜单、登录和注销 实现步骤: 在Student.cpp的...
A.机器学习入门算法(三):基... 机器学习算法(三):K近邻(k-nearest neigh...
数字温湿度传感器DHT11模块... 模块实例https://blog.csdn.net/qq_38393591/article/deta...
有限元三角形单元的等效节点力 文章目录前言一、重新复习一下有限元三角形单元的理论1、三角形单元的形函数(Nÿ...
Redis 所有支持的数据结构... Redis 是一种开源的基于键值对存储的 NoSQL 数据库,支持多种数据结构。以下是...
win下pytorch安装—c... 安装目录一、cuda安装1.1、cuda版本选择1.2、下载安装二、cudnn安装三、pytorch...
MySQL基础-多表查询 文章目录MySQL基础-多表查询一、案例及引入1、基础概念2、笛卡尔积的理解二、多表查询的分类1、等...
keil调试专题篇 调试的前提是需要连接调试器比如STLINK。 然后点击菜单或者快捷图标均可进入调试模式。 如果前面...
MATLAB | 全网最详细网... 一篇超超超长,超超超全面网络图绘制教程,本篇基本能讲清楚所有绘制要点&#...
IHome主页 - 让你的浏览... 随着互联网的发展,人们越来越离不开浏览器了。每天上班、学习、娱乐,浏览器...
TCP 协议 一、TCP 协议概念 TCP即传输控制协议(Transmission Control ...
营业执照的经营范围有哪些 营业执照的经营范围有哪些 经营范围是指企业可以从事的生产经营与服务项目,是进行公司注册...
C++ 可变体(variant... 一、可变体(variant) 基础用法 Union的问题: 无法知道当前使用的类型是什...
血压计语音芯片,电子医疗设备声... 语音电子血压计是带有语音提示功能的电子血压计,测量前至测量结果全程语音播报࿰...
MySQL OCP888题解0... 文章目录1、原题1.1、英文原题1.2、答案2、题目解析2.1、题干解析2.2、选项解析3、知识点3...
【2023-Pytorch-检... (肆十二想说的一些话)Yolo这个系列我们已经更新了大概一年的时间,现在基本的流程也走走通了,包含数...
实战项目:保险行业用户分类 这里写目录标题1、项目介绍1.1 行业背景1.2 数据介绍2、代码实现导入数据探索数据处理列标签名异...
记录--我在前端干工地(thr... 这里给大家分享我在网上总结出来的一些知识,希望对大家有所帮助 前段时间接触了Th...
43 openEuler搭建A... 文章目录43 openEuler搭建Apache服务器-配置文件说明和管理模块43.1 配置文件说明...