本文主要根据Jenkins上的日志来继续说明构建项目的过程,上文我们已经讲到构建一个测试环境或单独终端的过程,详情可以了解上篇文章

一、背景介绍

首先看下SVN代码的仓库的结构:

代码仓库里有一个文件夹,可以随便取名,文件夹中可以放置很多单独的项目,每个项目下有branch,trunk,demand三个文件。在branch下面可以有pc端,微信端,

APP端,后台等终端,从下面的结构中,可以看出每个终端的代码中有资源文件夹src(类的定义,配置文件,说明文档,jar包等)和pom文件。

二、构建trunk项目

当发布正式环境时需先先构建trunk,然后发布正式项目,因此此时需要注意,如果有项目功能没有写完,不能直接构建trunk,此时构建trunk会将仓库下所有项目修改或更新的部分全部更新到Jenkins工作目录中。

1、Jenkins中的SVN地址:

构建正式环境:需要构建trunk,将代码仓库中所有变动的代码和Jenkins工作目录中的代码对比,然后更新Jenkins工作目录的代码
3.4版本trunk地址
https://101.21.101.111:443/svn/代码仓库/branches/qianrongyiV3.4(项目下有web,APP,WeChat等终端)
.4版本正式项目地址:
https://101.21.101.111:443/svn/代码仓库/branches/qianrongyiV3.4/qian-web(pom文件)(单独web终端) 构建预发布环境:不需要构建trunk,只需要单独构建项目即可,将单独项目变动部分更新。
.4版本预发布环境:
https://101.21.101.111:443/svn/代码仓库/branches/qianrongyiV3.4/qian-app

2、构建3.4版本trunk的过程:

 Started by user @qq.com
Building in workspace /bat/jenkins/workspace/3.4-pro-trunk ##在Jenkins工作目录中更新3.-pro-trunk,如果没有这个文件夹,则创建。
Updating https://101.21.101.111:443/svn/代码仓库/branches/qianrongyiV3.4 at revision '2018-02-08T17:49:41.934 +0800'
下面内容表示更新Jenkins工作目录中项目的内容(根据SVN仓库中的文件与Jenkins工作目录中的文件对比),U表示更新;A表示添加;D表示删除。
U(update)qianee-common/src/main/java/com/test/qianee/constants/Constants.java(全路径为:/bat/jenkins/workspace/3.4-pro-trunk/qianee-common/src/main/java/com/test/qianee/constants/Constants.java;下面路径相同)
A(add) qianee-service/src/main/java/com/test/qianee/service/StatisticPlatformIncomeServiceImpl.java
U qianee-service/src/main/java/com/test/qianee/service/CapitalmanagerService.java
A qianee-service/src/main/java/com/test/qianee/service/ContentAdvertisementsLinksImple.java
D(delete) qianee-service/src/main/java/com/test/qianee/service/impl/ContentAdvertisementsLinksImple.java
D qianee-service/src/main/java/com/test/qianee/service/impl/StatisticPlatformIncomeServiceImpl.java At revision Parsing POMs ##开始分析pom文件
Established TCP socket on
[3.4-pro-trunk] $ java -cp /bat/jenkins/plugins/maven-plugin/WEB-INF/lib/maven32-agent-1.7.jar:/bat/maven/boot/plexus-classworlds-2.5..jar:/bat/maven/conf/logging jenkins.maven3.agent.Maven32Main /bat/maven /bat/webapps/jenkins/WEB-INF/lib/remoting-2.59.jar /bat/jenkins/plugins/maven-plugin/WEB-INF/lib/maven32-interceptor-1.7.jar /bat/jenkins/plugins/maven-plugin/WEB-INF/lib/maven3-interceptor-commons-1.7.jar ##指明了执行这个class文件所需要的所有类的包路径-即系统类加载器的路径
<===[JENKINS REMOTING CAPACITY]===>channel started
Executing Maven: -B -f /bat/jenkins/workspace/3.4-pro-trunk/pom.xml clean install
[INFO] Scanning for projects...
[INFO] ------------------------------------------------------------------------
[INFO] Reactor Build Order: ##反应堆(Reactor)是一个包含了所有需要构建模块的抽象概念;模块会被包含到反应堆;反应堆中所有模块的构建顺序
[INFO]
[INFO] qianee
[INFO] qianee-wechat-service
[INFO] qianee-talent-wechat-service 项目二: [INFO] ------------------------------------------------------------------------
[INFO] Building qianee-wechat-service 3.4-SNAPSHOT
[INFO] ------------------------------------------------------------------------
[INFO] ##加载maven清理插件,清除Jenkins工作目录下项目的target已编译文件
[INFO] --- maven-clean-plugin:2.5:clean (default-clean) @ qianee-wechat-service ---
[INFO] Deleting /bat/jenkins/workspace/3.4-pro-trunk/qianee-wechat-service/target
[INFO] ##为了使项目结构更为清晰,Maven区别对待Java代码文件和资源文件,maven-compiler-plugin用来编译Java代码,maven-resources-plugin则用来处理资源文件。 默认的主资源文件目录是src/main/resources,很多用户会需要添加额外的资源文件目录,这个时候就可以通过配置maven-resources-plugin来实现。
[INFO] --- maven-resources-plugin:2.6:resources (default-resources) @ qianee-wechat-service ---
[INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] Copying resource
[INFO]
[INFO] --- maven-compiler-plugin:3.1:compile (default-compile) @ qianee-wechat-service ---
[INFO] Changes detected - recompiling the module!
[INFO] Compiling source files to /bat/jenkins/workspace/3.4-pro-trunk/qianee-wechat-service/target/classes
[INFO]
[INFO] --- maven-resources-plugin:2.6:testResources (default-testResources) @ qianee-wechat-service ---
[INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] Copying resource
[INFO]
[INFO] --- maven-compiler-plugin:3.1:testCompile (default-testCompile) @ qianee-wechat-service ---
[INFO] Nothing to compile - all classes are up to date
[INFO]
[INFO] --- maven-surefire-plugin:2.12.:test (default-test) @ qianee-wechat-service ---
[JENKINS] Recording test results
[INFO]
[INFO] --- maven-jar-plugin:2.4:jar (default-jar) @ qianee-wechat-service ---
[INFO] Building jar: /bat/jenkins/workspace/3.4-pro-trunk/qianee-wechat-service/target/qianee-wechat-service.jar
[INFO]
[INFO] --- maven-install-plugin:2.4:install (default-install) @ qianee-wechat-service ---
[INFO] Installing /bat/jenkins/workspace/3.4-pro-trunk/qianee-wechat-service/target/qianee-wechat-service.jar to /root/.m2/repository/com/test/qianee/qianee-wechat-service/3.4-SNAPSHOT/qianee-wechat-service-3.4-SNAPSHOT.jar
[INFO] Installing /bat/jenkins/workspace/3.4-pro-trunk/qianee-wechat-service/pom.xml to /root/.m2/repository/com/test/qianee/qianee-wechat-service/3.4-SNAPSHOT/qianee-wechat-service-3.4-SNAPSHOT.pom -------------------------------------------------------
T E S T S
-------------------------------------------------------
Running com.test.qianee.app.WelcomeApiControllerTest ##运行app登录控制类测试
-- -- [main] [org.springframework.test.context.web.WebTestContextBootstrapper] [INFO] - Using TestExecutionListeners: [org.springframework.test.context.web.ServletTestExecutionListener@36ecb8fa, org.springframework.test.context.support.DirtiesContextBeforeModesTestExecutionListener@6f644141, org.springframework.test.context.support.DependencyInjectionTestExecutionListener@1ef84b89, org.springframework.test.context.support.DirtiesContextTestExecutionListener@3f271f41]
-- -- [main] [org.springframework.beans.factory.xml.XmlBeanDefinitionReader] [INFO] - Loading XML bean definitions from class path resource [TestContext.xml]
........(省略数行)......
==============loaded properties files=================
file [/bat/jenkins/workspace/3.4-pro-trunk/qianee-app/target/classes/application-sms.properties]
.......(省略数行).........
Results : ##几个类的测试结果 Tests in error:
test(com.test.qianee.app.UserApiControllerTest): Result{status=, msg='该手机号尚未注册,请重新输入或注册', bat=null, msgMap=null}
。。。。。。(省略数行)。。。。。 Tests run: , Failures: , Errors: , Skipped: [ERROR] There are test failures. Please refer to /bat/jenkins/workspace/3.4-pro-trunk/qianee-app/target/surefire-reports for the individual test results.
[JENKINS] Recording test results
[INFO] ##APP项目打包
[INFO] --- maven-war-plugin:2.2:war (default-war) @ qianee-app ---
[INFO] Packaging webapp
[INFO] Assembling webapp [qianee-app] in [/bat/jenkins/workspace/3.4-pro-trunk/qianee-app/target/qianee-app]
[INFO] Processing war project
[INFO] Copying webapp resources [/bat/jenkins/workspace/3.4-pro-trunk/qianee-app/src/main/webapp]
[INFO] Webapp assembled in [ msecs]
[INFO] Building war: /bat/jenkins/workspace/3.4-pro-trunk/qianee-app/target/qianee-app.war
[INFO] WEB-INF/web.xml already added, skipping
[INFO]
[INFO] --- maven-install-plugin:2.4:install (default-install) @ qianee-app ---
[INFO] Installing /bat/jenkins/workspace/3.4-pro-trunk/qianee-app/target/qianee-app.war to /root/.m2/repository/com/test/qianee/qianee-app/3.4-SNAPSHOT/qianee-app-3.4-SNAPSHOT.war
[INFO] Installing /bat/jenkins/workspace/3.4-pro-trunk/qianee-app/pom.xml to /root/.m2/repository/com/test/qianee/qianee-app/3.4-SNAPSHOT/qianee-app-3.4-SNAPSHOT.pom
[INFO]
。。。。。。(省略数行)。。。。。 、
[INFO] Reactor(反应器) Summary:
[INFO]
[INFO] qianee-web ......................................... SUCCESS [ 16.531 s]
[INFO] qianee-wechat-service .............................. SUCCESS [ 2.053 s]
[INFO] qianee-talent-wechat-service ....................... SUCCESS [ 1.889 s] [INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: : min
[INFO] Finished at: --08T17::+:
[INFO] Final Memory: 76M/557M
[INFO] ---------------------------项目存档---------------------------------------------
项目一存档:(将Jenkins工作目录中的war包和pom.xml文件存档备份到用户家目录下)
[JENKINS] Archiving(存档,归档) /bat/jenkins/workspace/3.4-pro-trunk/qianee-web/pom.xml to com.test.qianee/qianee-web/3.4-SNAPSHOT/qianee-web-3.4-SNAPSHOT.pom
[JENKINS] Archiving /bat/jenkins/workspace/3.4-pro-trunk/qianee-web/target/qianee-web.war to com.test.qianee/qianee-web/3.4-SNAPSHOT/qianee-web-3.4-SNAPSHOT.war
项目二存档:
[JENKINS] Archiving /bat/jenkins/workspace/3.4-pro-trunk/qianee-talent-wechat-service/pom.xml to com.test.qianee/qianee-talent-wechat-service/3.4-SNAPSHOT/qianee-talent-wechat-service-3.4-SNAPSHOT.pom
[JENKINS] Archiving /bat/jenkins/workspace/3.4-pro-trunk/qianee-talent-wechat-service/target/qianee-talent-wechat-service.jar to com.test.qianee/qianee-talent-wechat-service/3.4-SNAPSHOT/qianee-talent-wechat-service-3.4-SNAPSHOT.jar
项目三存档:
[JENKINS] Archiving /bat/jenkins/workspace/3.4-pro-trunk/qianee-wechat-service/pom.xml to com.test.qianee/qianee-wechat-service/3.4-SNAPSHOT/qianee-wechat-service-3.4-SNAPSHOT.pom
[JENKINS] Archiving /bat/jenkins/workspace/3.4-pro-trunk/qianee-wechat-service/target/qianee-wechat-service.jar to com.test.qianee/qianee-wechat-service/3.4-SNAPSHOT/qianee-wechat-service-3.4-SNAPSHOT.jar
。。。。。。(省略数行)。。。。。
channel stopped
Finished: UNSTABLE

3、Jenkins上trunk配置:

部分1、Maven project name 栏设置

主要填写Maven project name(工程名)、Descript(工程描述信息)

部分2、Source Code Management 栏设置

输入源码的获取地址,由于我的插件中演示的是svn,那么如下输入:

Repository depth: Jenkins在执行checkout、update代码时,所取出的代码的范围。默认我们选择infinity就可以。

Check-out Strategy:svn第一次更新代码和以后同步代码的步骤,和策略。默认选项一般就可以。

部分3、Build Triggers 栏设置

默认选项为:

Build whenever a SNAPSHOT dependency is buil 意思就是svn更新触发构建

这里建议选择:

Poll SCM 相当于新建一个计划任务,定时检查版本库,发现有新的提交就触发构建。其配置的意思和linux的crontab差不多,如10分钟构建一次

部分4、Build 栏设置

如果对mvn构建参数有需求,或者需要设置pom.xml的文件位置,可以在这里设置。

默认: pom.xml的文件就在工程目录下。

部分5、完成

点 save 完成对一个一个工程的设置

4、构建trunk的结果:

Jenkins中maven的作用--构建项目(三)的更多相关文章

  1. jenkins+git+maven搭建自动化部署项目环境

    简介    折腾了两个晚上,趁着今晚比较有空,把jenkins+git+maven搭建自动化部署项目环境搭建的过程记录一下,这里我把github作为git的远程仓库(https://github.co ...

  2. jenkins实现手动选择分支构建项目-Git Paramater

    先下载插件: Git Paramater 参照: jenkins-参数化构建(三)插件:Git Parameter https://www.cnblogs.com/zhaojingyu/p/98624 ...

  3. 解放双手 | Jenkins + gitlab + maven 自动打包部署项目

    前言 记录 Jenkins + gitlab + maven 自动打包部署后端项目详细过程! 需求背景 不会偷懒的程序员不是好码农,传统的项目部署,有时候采用本地手动打包,再通过ssh传到服务器部署运 ...

  4. 记Spring搭建功能完整的个人博客「Oyster」全过程[其二] Idea中Maven+SpringBoot多模块项目开发的设计和各种坑(模块间依赖和打包问题)

    大家好嘞,今天闲着没事干开写写博客,记录一下Maven+SpringBoot的多模块设计和遇到的坑. 多模块设计 简单说明一下截止目前的需求: 需要RESTful API:对文章.标签.分类和评论等的 ...

  5. SpringCloud+Docker+Jenkins+GitLab+Maven实现自动化构建与部署实战

    1.前言与初衷 本文章会涉及Docker常见命令基础知识点结合不同场景实操一起使用. 本文章会涉及结合工作过程中部署不同环境服务器的项目案例场景为初心进行实际细讲. 本文章主要讲述Docker.Jen ...

  6. 转载Eclipse中Maven WEB工程tomcat项目添加调试

    转载地址: http://blog.csdn.net/free4294/article/details/38260581 一.建立一个maven  WEB项目 1.file->new->o ...

  7. ubuntu中maven建的web项目不能将project facet设置为 dynamic web module 3.0

    核心参考:maven 不能设置为web3.0人解决方法 error:Description    Resource    Path    Location    Type Cannot change ...

  8. idea中maven 加载spring-boot项目程序包找不到解决…

    首先检查maven配置对不对,包括被settings文件以及资源库的位置,maven版本等. 如果不行的话再进行下面的操作: 第一种方案: 在终端terminal中项目目录下,输入“mvn idea: ...

  9. eclipse中maven插件上传项目jar包到私服

    我们知道,每一个公司都会有自己的工具包或公共包.这样的包就能够上传到公司的maven私服,就不用每一个人都去同步开发包了. 那么,怎么把本地项目打包并公布到私服呢?依照例如以下步骤就能够轻松完毕. 1 ...

随机推荐

  1. e621. Activating a Keystroke When Any Child Component Has Focus

    Normally, a keystroke registered on a component is activated when the component has the focus. This ...

  2. Ubuntu server版上使用命令行操作VPNclient

    Ubuntu server版上使用命令行操作VPNclient VPN,虚拟专用网络,这个技术还是非常有用的.近期笔者參与的项目中就使用上了VPN,大概情况是这种.有两个开发团队,在异地,代码服务器在 ...

  3. Storm On YARN带来的优点

    1)弹性计算资源     将storm执行在yarn上后,Storm能够与其它计算框架(如mapreduce)共享整个集群的资源.这样当Storm负载骤增时,可动态为它添加计算资源. 负载减小时,能够 ...

  4. (转)JavaScript内存模型

    JavaScript对象内存模型 转自:http://blog.csdn.net/u010425776/article/details/53617292  推荐-JavaScript作用域链内存模型: ...

  5. 《开源框架那些事儿22》:UI框架设计实战

    UI是User Interface的缩写.通常被觉得是MVC中View的部分,作用是提供跟人机交互的可视化操作界面. MVC中Model提供内容给UI进行渲染,用户通过UI框架产生响应,一般而言会由控 ...

  6. logging.xml file setfile(null,true) call failed

    定义目录三个方法:一:${catalina.base}或${catalina.home}相对路径配置方法.catalina.home是你配置服务器时自动在环境变量中加的路径,默认是指向tomcat服务 ...

  7. tomcat server.xml docbase workdir

    在tomcat安装好后,只要把你的web项目copy到%TOMCAT_HOME%webapp下面就可以是使用啦!!其实还有种方法就是设定虚拟目录,即把项目的目录映射到tomcat中.这样做即可以不用重 ...

  8. JUC回顾之-线程池的原理和使用

    Java并发编程:线程池的使用   Java并发编程:线程池的使用 在前面的文章中,我们使用线程的时候就去创建一个线程,这样实现起来非常简便,但是就会有一个问题: 如果并发的线程数量很多,并且每个线程 ...

  9. bootstrap中如何使input中的小图标获得点击事件

    bootstrap中,放入input中的小图标是不能点击的. 在表单中经常遇见密码旁边的眼睛图标点击后,可使密码可见. 要使小图标获得点击事件,可在小图标上覆盖一个跟小图标一样大的透明层,然后给透明层 ...

  10. mysql数据库中,查看当前支持的字符集有哪些?字符集默认的collation的名字?

    需求描述: mysql数据库支持很多字符集,那么如何查看当前的mysql版本中支持的或者说可用的字符集有什么呢? 操作过程: 1.使用show character set的方式获取当前版本中支持的字符 ...