Jenkins中使用Git和Maven之多个项目

集中管理 JenkinsFile:一步步教程 - Pipeline script from SCM 你是否有过这样的困扰:每个项目都有一个 JenkinsFile 文件,但是这些文件散布在不同的项目仓库中,导致管理维护成为一件繁琐的事情?在这个步骤中,我们将创建一个 Git 仓库,用于集中存放所有项目JenkinsFile 文件。在这个步骤中,我们将在 “jenkinsfile-collection” 项目中创建一个名为 “Jenkinsfile” 的文件,此文件将用于驱动所有其他。在这个步骤中,我们将把各个项目JenkinsFile 文件放入集中仓库的对应子目录中。 阅读详情

分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow

也欢迎大家转载本篇文章。分享知识,造福人民,实现我们中华民族伟大复兴!

               

1.应用Aggregation管理多个子项目

Maven中有一个Aggregation(聚合),可以将多个项目作为模块添加到一个pom.xml中,然后告诉Jenkins这个顶层pom.xml,就可以自动从Git中拿出这些项目的源代码,并build所有的子项目和运行相应的测试程序。我这里使用的是TestNG。

比如我有两个maven项目client和email_sender,我希望一次编译并测试,在这两个项目文件夹之上的目录上添加一个pom.xml,内容如下:

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">  <modelVersion>4.0.0</modelVersion>  <groupId>com.kaimei.datacenter</groupId>  <artifactId>cml</artifactId>  <version>2.0</version>  <packaging>pom</packaging>  <modules>    <module>client</module>    <module>email_sender</module>  </modules></project>

然后只要告诉Jenkins中这个pom.xml的路径即可。点击build now进行测试,可以看到两个子项目都已经被下载源代码和编译,运行了TestNG的测试程序。

注意module名称应该是子项目的目录名。


2.多个项目之间的依赖关系管理

client和email_sender项目在上例中没有关联关系,为了演示持续集成在依赖树的build管理,现在建立一个新的maven项目名叫mongo_utility,这个项目提供了一个类DBManager封装了MongoDB的连接,代码来源于我的另一篇文章:http://blog.csdn.net/sheismylife/article/details/7090526

client项目和email_sender项目都通过DBManager类来和MongoDB建立连接。因此它们的pom.xml中都有这一段:

    <dependency>      <groupId>com.kaimei.datacenter</groupId>      <artifactId>mongo_utility</artifactId>      <version>1.0</version>          </dependency>

build成功。仔细看Console Output,Jenkins的行为和直接使用mvn clean compile不太一样。Jenkins会将mongo_utility的源代码取出来,然后重新编译,安装到本地仓库,然后再编译其他两个工程。如果直接敲mvn clean compile的话,mongo_utility-1.0.jar会直接从私服上下载然后安装,不会编译。



3.多个项目共享相同的设置

client,email_sender和mongo_utility三个项目都用到了mongodb java library,为了便于管理,没有必要让它们各自的pom.xml中都定义相同的dependency。Maven将每个项目的pom.xml看作一个工程对象,通过继承可以让它们共享同一个配置。

在顶层的pom.xml中添加mongodb依赖:

  <dependencies>    <dependency>      <groupId>org.mongodb</groupId>      <artifactId>mongo-java-driver</artifactId>      <version>2.7.2</version>    </dependency>  </dependencies>
然后在client,mongo_utility和email_sender项目的pom.xml中分别删除上面的依赖,并添加如下配置:

  <parent>    <groupId>com.kaimei.datacenter</groupId>    <artifactId>cml</artifactId>    <version>1.0</version><!-- or whatever version you use -->    <relativePath>../pom.xml</relativePath>  </parent>

然后测试,大功告成。


4.模块部署到nexus服务器上

如果想将某个模块项目比如这里的mongo_utility项目部署到nexus服务器上,需要调整顶层目录的pom.xml,加上下面的配置:

  <distributionManagement>    <repository>      <id>sheismylife</id>      <url>http://S1:8081/nexus/content/repositories/sheismylife</url>    </repository>  </distributionManagement>
但是这样三个模块项目都自动继承了deploy功能。其实我只想mongo-utility模块部署到nexus上,暂时把问题放在这里吧。

然后在顶层目录上执行mvn clean deploy,一切顺利。将代码提交到git仓库中,然后修改Jenkins的项目配置页面,添加clean deploy命令。

点击Build Now按钮,看看结果,一切OK.值得一提的是,如果你通过mvn命令行执行正确,而通过Jenkins执行错误,重新启动一下Jenkins服务,或许能解决。我已经碰到几次了,似乎Jenkins有bug.



5.通过Jenkins将web项目部署到Glassfish或者Tomcat

 基本做法还是通过Maven项目的plugin来完成部署。有一个问题是如果web项目和其他几个项目都作为一个大项目的模块被聚合在一起,而且都继承某个parent pom.xml,那么如何用一个Maven命令就能编译所有的模块,部署到nexus私服,而且将web项目发布到Glassfish或者Tomcat上。还正在研究,希望能够够通过Maven来实现这个功能。


6.一个Jenkins上的多个project之间的顺序执行

这个很简单,Jenkins的project配置里面可以设置在某个project之后build,或者在本project build之后build other project.

7.多个Jenkins之间的远程调用

S1上的Jenkins A调用某个shell脚本,比如curl http://S2/job/test/build

S2上的Jenkins B的test project就会被触发

来个复杂的例子,Jenkins A调用JenkinsB 并传递参数,参数必须是json格式,因此根据curl的语法,应该写成这样:

curl http://10.112.18.110:8080/jenkins/job/upland-install/build -d token=zorn --data-ascii json="{'parameter':[{'name':'number','value':${BUILD_NUMBER}}]}"


而Jenkins B项目中,选择 This build is parameterized

然后设置参数名称和默认值。之后用%number%的形式引用参数。







           

给我老师的人工智能教程打call!http://blog.csdn.net/jiangjunshow
这里写图片描述
置顶必读(1) | 2026最新首发,全网最全 Spring Boot 学习宝典(附思维导图) 从0到1以知识点+实例+项目的教学模式对SpringBoot框架由浅入深进行学习,快来跟bug菌一起学习吧。 阅读详情

相关推荐

Flutter:如何在Android中实现串口通信调试

本文介绍如何通过flutter_libserialport插件在Flutter中实现串口通信调试。

sg_knight的专栏 6057

springboot+maven项目jenkins多环境打包设置

使用maven-resources-plugin配置不同环境,进行多环境打包 pom文件中引入maven-resources-plugin <build> <plugins> <!-- 指定JDK编译版本--> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-

S_X_Han的博客 2097

Weka学习笔记01:初探Weka世界

下载、安装启动Weka、Weka数据格式

howard2005的专栏 1433

Jenkins+GitLab部署Maven项目

Jenkins+GitLab部署 一、目标 通过Jenkins+GitLab实现Maven项目自动打包部署 二、部署环境 操作系统 Windows10(192.168.101.174) 、CentOS7 (192.168.101.200)各一台 软件:tomcat8.0 、JenkinsGitLab 、git 三、安装说明 CentOS7安装GitLab http://192.16...

曼巴Fans 7013

jenkins发布maven多模块+springboot项目(升级版)

1.项目结构 经过思考,我的项目既结合了横向分层又结合了纵向封层。 最顶层的是main的父pom文件,打包方式是pom main模块的子模块有:official,user,auth-jwt,common,global-config,global-handle,除了officialuser的打包方式是pom外,其他都是jar,作为公共模块 user模块的子模块有:user-dao,us...

weixin_38312502的博客 4445

linux git多个远程项目,Jenkins使用GitMaven多个项目

1.应用Aggregation管理多个项目Maven中有一个Aggregation(聚合),可以将多个项目作为模块添加到一个pom.xml中,然后告诉Jenkins这个顶层pom.xml,就可以自动从Git中拿出这些项目的源代码,并build所有的子项目运行相应的测试程序。我这里使用的是TestNG。比如我有两个maven项目clientemail_sender,我希望一次编译并测试,在这两...

weixin_31041955的博客 329

配置多个git账号_docker随手笔记第七节 jenkins通过git部署java微服务插件安装

docker随手笔记第一节 docker概念及安装docker随手笔记第二节 docker常用命令解析docker随手笔记第三节 docker构建java镜像docker随手笔记第四节 docker安装mysql5.7docker随手笔记第五节 docker安装redis4.0jenkins部署git的java微服务需要如下插件SSH plugin (远程登陆到服务器用的,主要用来上传镜像,下载镜...

weixin_29465407的博客 188

Jenkins使用过程中遇到的问题总结

记录Jenkins使用过程中遇到的问题及解决方法

Ukulilion的博客 9333

Jenkins自动化部署项目

一、在你的本地电脑或者linux服务器上下载安装jenkins: jenkins下载地址:https://jenkins.io/下载网站的war包版本就好了 下载完后把它部署到你的tomcat上运行:放到tomcat的webapps目录下,启动tomcat(windows下双击startup.bat或者linux下运行shstartup.sh),然后通过浏览器访问,如我的电脑上访问:lo...

xinzhong19901001的专栏 417

jenkins自动化部署

Linux下的Jenkins+Tomcat+Maven+Git+Shell环境的搭建使用jenkins自动化部署) **目标:**jenkins上点构建(也可以自动检查代码变化自动构建)》》》项目部署完成。 这里选择Tomcat运行war包使用比较简单! 1.安装jdk1.8 jdk-8u171-linux-x64.tar.gz [root@localhost ~]# mk...

Boss_qsc的博客 679

linux搭建jenkins+maven+git+nodejs打包部署

linux搭建jenkins+maven+git+nodejs打包部署 linux安装Jenkins 一,首先需要安装JDK,我这里用的是jdk1.8版本: 1,通过yum命令安装:执行以下命令查看可安装的JDK版本 新的改变 我们对Markdown编辑器进行了一些功能拓展与语法支持,除了标准的Markdown编辑器功能,我们增加了如下几点新功能,帮助你用它写博客: 全新的界面设计 ,将会带来全...

Slmple的博客 1248

Linux部署maven多模块,Jenkins如何构建maven多模块项目

我有一个maven 的springboot项目这个项目有多模块,一个parent pom,一个api模块,然后其他模块都依赖于api模块配置jenkins由于这个maven多模块项目上传在同一个git repository中所以他们统一作为一个projectproject下面其实也是分modules了但是每个module只可以编译不可以设置Post Steps(我的步骤是编译生成jar包,然后在p...

weixin_35942339的博客 1222

使用Jenkins来构建GIT+Maven项目

使用Jenkins来构建GIT+Maven项目 前言 最近写了一篇博客是关于 使用Jenkins来构建SVN+Maven项目 ,这里使用的的代码版本工具是SVN,但是事实上也有很多公司使用GIT来进行代码管理,那么我们如何使用Jenkins去自动发布GIT+Maven项目呢? 正文 Jenkins Jenkins是一个开源的、可扩展的持续集成、交付、部署的基于web界面的平台。允许持续集成持续交付项目,无论用的是什么平台,可以处理任何类型的构建或持续集成。 通常我们使用Jenkins主要实现以下功能:

蹊源的奇思妙想的博客 9335

使用Jenkins配置Git+Maven的自动化构建

JenkinsGitMavenjenkins的安装与使用Git的安装与使用Maven的安装与使用,安装Jenkins插件

徐刘根的博客 16万+
上一篇: 将Maven项目发布到Nexus私服
下一篇: HDFS用户权限管理
在意一下
博客等级 码龄8年 27粉丝 258原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值