Java配置maven+jenkins+git(svn)+tomcat自动编译和部署(持续集成)

2024-09-04 11:18

本文主要是介绍Java配置maven+jenkins+git(svn)+tomcat自动编译和部署(持续集成),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

目的

在开发中,需要经常频繁的对测试服务器进行部署,而且在多人协同中开发经常遇到的问题就是别人更新了他的代码,而你去更新你的代码时并没有更新到别人的代码,导致测试环境的代码不是最新,当然这个问题也好解决,那就是每次更新的时候先获取版本控制器上面的代码,然后更新,当然每次这样操作都是耗时耗力的,如果是整个项目更新,一般项目至少3、40M上传到服务器也需要一定的时间,而部分更新,也需要找到指定的文件或者整个代码覆盖,然后重启服务器(Tomcat里面直接覆盖class虽然可以配置热加载,但是容易内存溢出),就我工作中的情况而言,是每次都需要先把代码上传到服务器-解压-找到Tomcat进程id(Linux)-kill线程-启动Tomcat,每次下来就需要最少几分钟时间,而且每天有可能多次部署,所以对整个工作效率是有一定影响的。正是因为以上种种,所以才有了本文,而本文最终的结果就是一旦代码上传到Git或者svn的时候,代码能自动部署到服务器上面去,这样我们就只需要吧正确的代码提交的版本控制器,就不用理会服务器的更新了

jenkins部署

Jenkins是一个开源软件项目,旨在提供一个开放易用的软件平台,使软件的持续集成变成可能 
Jenkins是基于Java开发的一种持续集成工具,用于监控持续重复的工作,功能包括: 
1、持续的软件版本发布/测试项目。 
2、监控外部调用执行的工作。 
(来自百度百科)

Jenkins能做的东西有很多,不过本文只介绍一个简单的自动编译打包部署,首先下载Jenkins,推荐下载war包,下载地址: 
下载主页

war包下载

本文是基于war环境部署的,把下载好的war文件直接放到Tomcat中,然后启动Tomcat,启动成功后访问tomcat的jenkins项目如:

http://localhost:8080/jenkins会看到以下界面jenkins界面
注意红色框中的红色文字,那个是初始密码的路径,直接根据路径找到initialAdminPassword文件并打开,吧密码复制出来,输入到页面中点击continue按钮,进入下一步: 
选择安装界面
Jenkins拥有很多插件,一般在开始我们并不清楚需要什么插件的时候,可以选择自定义安装,把所有基本的插件全部安装好,此页面第一个按钮是安装推荐插件,第二个是自己选择安装,这里我选择第二个按钮 

此界面是初始化安装插件的界面,先选择All插件,然后点击install 
在这个界面需要多等一下,因为是在网上下载插件,而且是外国的网站,所以经常有下载失败的情况,最好打开VPN,当所有插件安装完成后会有continue按钮出现,如果没有则刷新一下页面,当然也可能存在有插件安装失败,根据自己是否需要自行选择retry或continue,这里因为我的都已经安装完成了,所以进入到了下一个页面 
在此页面设置用户名和密码,记得点击save and finish按钮,如果选择了Continue as admin,会把用户名重置admin,然后密码也是你设置的密码,而是初始化文件中的密码,设置完成之后的页面 

再次点击save and Finish即可

Jenkins主界面 
Jenkins主界面

配置Jenkins

创建项目之前先要对Jenkins进行基本的配置,比如jdk的目录,git命令的目录和maven的目录等等

首先点击系统管理 
点击系统管理 
进入管理页面后如图: 
配置管理页面
点击Global Tool Configuration进入插件配置页面

配置jdk

配置jdk
点击新增JDK按钮,会显示jdk配置form,如果电脑上已经安装了jdk则可以去掉自动安装,不过如果是用Tomcat运行的Jenkins那么是肯定已经安装了的,这里我们只需要配置好jdk别名和JAVA_HOME即可 

配置git

配置git
需要将git.exe的正确路径配置到Path to Git executable中(注意Linux没有exe后缀)

配置maven

配置maven
跟jdk相同,配置好名字和路径即可,当然也可以选择自动安装,不过还是推荐手动安装然后配置,配置好了之后点击save即可

安装插件

由于新版默认没有将war部署到Tomcat的插件,所以需要手动安装,在系统管理中选择管理插件,再选择可选插件,搜索Deploy to Container Plugin,然后勾选点击直接安装

创建Jenkins任务

点击开始创建一个新任务进入任务创建页面 
创建项目页面
先输入项目名字,然后选择构建一个maven项目,最后点击ok按钮

选择版本控制器

页面中找到源码管理模块,根据项目使用的版本控制器选择,如我们使用的git,则选择git 

选择构建触发器

如果是git的话,可以直接通过GitLab(WebHooks)来实现触发,这样你每次提交到配置编译的分支就会git就会通知,不过目前我知道的是git.oschina.NET的钩子没有作用,当然如果不是git或者钩子没有作用的时候,可以用最简单的,定时查询 
这样是每10分钟查询一次,如果有更新就构建,具体Poll SCM的参数可以百度,那里更加详细

配置编译命令

编译命令我们可以直接配置最简单的命令编译 

选择Execute shell,在出来的界面中配置maven命令就行了,比如

mvn install
  • 1
  • 1
配置部署到Tomcat

点击新增构建后操作,选择Deploy war/ear to a container,然后配置WAR/EAR files,这个war的地址,一般都target/xxx.war,xxx是war的文件名

然后点击Add Container,添加Tomcat服务器 

配置好Tomcat的管理员用户和密码以及Tomcat的访问地址就ok了,这样只要你上传了代码,并且是配置编译的分支,一般过几分钟就会自动编译然后部署到Tomcat中了,当然最好还是用git,然后通过GitLab实现,这样不仅不用每隔几分钟查询一次,而且延迟很小

这篇关于Java配置maven+jenkins+git(svn)+tomcat自动编译和部署(持续集成)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1135865

相关文章

Spring事务传播机制最佳实践

《Spring事务传播机制最佳实践》Spring的事务传播机制为我们提供了优雅的解决方案,本文将带您深入理解这一机制,掌握不同场景下的最佳实践,感兴趣的朋友一起看看吧... 目录1. 什么是事务传播行为2. Spring支持的七种事务传播行为2.1 REQUIRED(默认)2.2 SUPPORTS2

怎样通过分析GC日志来定位Java进程的内存问题

《怎样通过分析GC日志来定位Java进程的内存问题》:本文主要介绍怎样通过分析GC日志来定位Java进程的内存问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、GC 日志基础配置1. 启用详细 GC 日志2. 不同收集器的日志格式二、关键指标与分析维度1.

Java进程异常故障定位及排查过程

《Java进程异常故障定位及排查过程》:本文主要介绍Java进程异常故障定位及排查过程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、故障发现与初步判断1. 监控系统告警2. 日志初步分析二、核心排查工具与步骤1. 进程状态检查2. CPU 飙升问题3. 内存

java中新生代和老生代的关系说明

《java中新生代和老生代的关系说明》:本文主要介绍java中新生代和老生代的关系说明,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、内存区域划分新生代老年代二、对象生命周期与晋升流程三、新生代与老年代的协作机制1. 跨代引用处理2. 动态年龄判定3. 空间分

Java设计模式---迭代器模式(Iterator)解读

《Java设计模式---迭代器模式(Iterator)解读》:本文主要介绍Java设计模式---迭代器模式(Iterator),具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,... 目录1、迭代器(Iterator)1.1、结构1.2、常用方法1.3、本质1、解耦集合与遍历逻辑2、统一

Java内存分配与JVM参数详解(推荐)

《Java内存分配与JVM参数详解(推荐)》本文详解JVM内存结构与参数调整,涵盖堆分代、元空间、GC选择及优化策略,帮助开发者提升性能、避免内存泄漏,本文给大家介绍Java内存分配与JVM参数详解,... 目录引言JVM内存结构JVM参数概述堆内存分配年轻代与老年代调整堆内存大小调整年轻代与老年代比例元空

深度解析Java DTO(最新推荐)

《深度解析JavaDTO(最新推荐)》DTO(DataTransferObject)是一种用于在不同层(如Controller层、Service层)之间传输数据的对象设计模式,其核心目的是封装数据,... 目录一、什么是DTO?DTO的核心特点:二、为什么需要DTO?(对比Entity)三、实际应用场景解析

Java 线程安全与 volatile与单例模式问题及解决方案

《Java线程安全与volatile与单例模式问题及解决方案》文章主要讲解线程安全问题的五个成因(调度随机、变量修改、非原子操作、内存可见性、指令重排序)及解决方案,强调使用volatile关键字... 目录什么是线程安全线程安全问题的产生与解决方案线程的调度是随机的多个线程对同一个变量进行修改线程的修改操

从原理到实战深入理解Java 断言assert

《从原理到实战深入理解Java断言assert》本文深入解析Java断言机制,涵盖语法、工作原理、启用方式及与异常的区别,推荐用于开发阶段的条件检查与状态验证,并强调生产环境应使用参数验证工具类替代... 目录深入理解 Java 断言(assert):从原理到实战引言:为什么需要断言?一、断言基础1.1 语

深度解析Java项目中包和包之间的联系

《深度解析Java项目中包和包之间的联系》文章浏览阅读850次,点赞13次,收藏8次。本文详细介绍了Java分层架构中的几个关键包:DTO、Controller、Service和Mapper。_jav... 目录前言一、各大包1.DTO1.1、DTO的核心用途1.2. DTO与实体类(Entity)的区别1