Jenkins构建ant项目

Jenkin创建任务
• 在浏览器中输入:http://localhost:8080/,进入jenkins管理页面
• 选择左边菜单的“新建”
• 选择构建一个*风格的软件项目,输入item名称:empi-core(医院平台中的某个模块),点OK

Jenkins构建ant项目

Jenkin任务SVN配置
• 在源码管理中选择“Subversion”
• 在Repository Url中输入svn的url地址后出现红色提示信息,点击enter credential
• 如果没有出现红色提示信息,说明SVN的这个url已经验证过用户名和密码了,就不需要再次验证了

Jenkins构建ant项目

Jenkin任务SVN配置
• 选择 “username/password authentication”
• 输入SVN的用户名和密码,点ok

Jenkins构建ant项目

Jenkin任务构建触发器
• build after other project are build:在其他项目构建完成后才执行构建:指定的项目完成构建后,触
发此项目的构建。
• Poll SCM :这是CI 系统中常见的选项。当您选择此选项,您可以指定一个定时作业表达式来定义
Jenkins每隔多久检查一下您源代码仓库的变化。如果发现变化,就执行一次构建。
• Build periodically :此选项仅仅通知Jenkins按指定的频率对项目进行构建,而不管SCM是否有变化。
• 我们选择Poll SCM,并且在日程表中输入“* * * * *",表示每隔一分钟就去SVN检查一次看是否有代码更
新,一旦发现代码更新就重新构建一次

Jenkins构建ant项目

Jenkin任务-添加构建步骤
• 在添加构建后步骤中选择“Invoke Ant”
• 在“Invoke Ant”中 选择当前安装的ant,注意不能选择default
• 在Targets中输入,构建步骤 clean init build(多个命令之间用空格隔开)

Jenkins构建ant项目

Jenkin任务-build.xml
• Ant 的构建的每个Target不是随便写的,而是来自build.xml这个文件中定义的target的
name
• build.xml 这个文件应该放在jenkin的workspace文件夹下的每个任务的根目录下,例如
• C:\Program Files (x86)\Jenkins\workspace\empi\build.xml
• build.xml这个文件可以通过自己手工编写,也可以在eclipse里面自动转换生成(前提是
eclipse的环境没有问题,各种依赖的jar包都导进来了)
• 手工编写: 要了解其中的几个比较关键的标签
• 1.标签
• 每个构建文件对应一个项目。标签时构建文件的根标签。它可以有多个内在属

• (1) default表示默认的运行目标,这个属性是必须的。
• (2) basedir表示项目的基准目录。
• (3) name表示项目名。
• (4) description表示项目的描述。
• 每个构建文件都对应于一个项目,但是大型项目经常包含大量的子项目,每一个子项目都可
以有自己的构建文件。

Jenkin任务-build.xml
• 2.标签
• 一个target标签可以依赖其他的target标签。例如,有一个target用于编译程序,另一个
target用于打包。打包之前必须先编译该文件,因此打包的target依赖于编译程序的 target。
Target的所有属性如下。
• (1).name表示标明,这个属性是必须的。
• (2).depends表示依赖的目标。
• (3)if表示仅当属性设置时才执行。
• (4)unless表示当属性没有设置时才执行。
• (5)description表示项目的描述。
• Ant的depends属性指定了target的执行顺序。Ant会依照depends属性中target出现顺序
依次执行每个target。在执行之前,首先需要执行它所依赖的target。程序中的名为run的
target的depends属性compile,而名为compile的target的 depends属性是prepare,所
以这几个target执行的顺序是prepare->compile->run。一个target只能被执行一次,即
使有多个target依赖于它。如果没有if或unless属性,target总会被执行。
• 其他更为详细的请见
http://www.cnblogs.com/xionghui/archive/2012/03/13/2393679.html

Jenkin任务-举例 :helloworld的build.xml
• <?xml version="1.0" encoding="UTF-8" ?>























Jenkin任务-Eclipse中导出build.xml
• 将项目导进eclipse:打开eclipse,选择“file->import->Existing Project into Workspace",选择项目
的代码目录所在,要选择src的上一个层目录,点“finsish”完成, 这样需要构建的代码就被导进了eclipse

Jenkins构建ant项目

Jenkin任务-Eclipse中导出build.xml
• 对于非maven的项目,项目所依赖的包就不会集中的放在仓库中,而是分别放在几个地方,你可以从
eclipse的左侧看出
一部分在WebRoot/WEB_INF/lib或者WebContent/WEB_INF/lib下面(这里面的包是从SVN上下载时
一起下载下来的),
一部分在JRE SYSTEM LIBRARY,Java EE 6 Libraries, Web App Libraries(这里面都是JDK的一些标
准的基础的包)

Jenkins构建ant项目

Jenkin任务-Eclipse中导出build.xml
一部分是Tomcat中的包,需要通过在eclipse中导入tomcat来导入
打开eclipse->windows->preference->server->runningtime

Jenkins构建ant项目

Jenkin任务-Eclipse中导出build.xml
• 选择右上角的“add”按钮,选择你所安装的tomcat,例如”Apache Tomcat v6.0“

Jenkins构建ant项目

Jenkin任务-Eclipse中导出build.xml
• 输入Tomcat 的安装目录所在地址,点击finish

Jenkins构建ant项目

Jenkin任务-Eclipse中导出build.xml
• 经过这些操作之后,依赖的包基本上都有了,如果还提示缺少包,咨询开发人员,
• 一定要等依赖的包都找到之后才能导出生成build.xml,否则在jenkins里面的跑的时候肯定也会报错,这时还需要返回eclipe去找包,再重新导出build.xml
• 在eclipse中选中项目节点,在右键菜单中选”导出“,在导出界面中选择”Ant Buildfiles",点finish,这样就可以看到在eclipse的workspace中对应于这个项目的根节点下面出现了build.xml这个文件

Jenkins构建ant项目

Jenkin任务-Eclipse中导出build.xml
• 通过Eclipse导出的build.xml 比较长,因为里面有很多关于jar包所在路径的信息,而我们不需要全部看
懂,只找出关键的几个Target,包括:clean, init, build,compile等等
• 因为 Target的name是可以*定义的,所以关键是看到一些Target下面的子节点是什么
• 例如: init 中一般做的事情是 …,(创建用于保存编译后生成的.class目录)
• clean中一般做的事情是…( 删除上一次编译生成的存放class文件的目录或
文件)
• build中一般做的事情是…,(编译java源文件,生成目标的.class文件)
• package中一般做的事情是…, …(将生成的.class文件打包成.jar或
者.war 包,以待部署)
• 关键在于:分析清每个Target在做什么,按照 清理 ->初始化->编译->打包 这个顺序,将对应得Target
填进 jenkins中

Jenkins构建ant项目

Jenkin任务邮件通知设置
• 在添加构建后步骤中选择“E-mail Notification”
• 在recipients中输入接受人的邮件地址:[email protected],如果多个邮件地址用空格来隔开

Jenkin任务-打包
• 首先要修改build.xml文件,添加用于打包的target
• 打包的target写法如下,在build.xml中添加



其中destfile=“package/EMPI-Core.war是打包生成的包的名字和所存放的相对路径,
basedir=”WebRoot“ 是被打包的相对路径

• 在此“立即构建”EMPI-Core项目,构建完成之后你可以在jenkins的安装目录下的
C:\Program Files (x86)\Jenkins\workspace\empi-core\package,看到 EMPI-Core.war这个包,
说明打包成功

Jenkin任务-部署(方案1 利用jenkins插件)
• 首先要安装插件”deploy-to-container-plugin“,在jenkins首页选择”管理插件“
• 在:管理插件中选择”可安装插件“,搜索”deploy-to-container-plugin“,然后直接点击”安装“,
jenkins将自动安装

Jenkins构建ant项目

Jenkin任务-部署
• 插件安装完之后,在构建后操作中将会出现"Deploy war/ear to container",选择该项
• WAR/EAR files:是war包的相对路径(相对于workspace)
• content path:tomcat的发布路径,即使用localhost/(content path设置的名字)来访问项目.
• contaners :发布到的容器,主要可发布到tomcat、jboss、GlassFish,这里选择已经安装好的Tomcat7.x,然后输入Tomcat的用户名和密码,关键还有Tomcat的url

Jenkins构建ant项目

Jenkin任务-部署 tomcat配置
• 上一环节要输入tomcat的用户名和密码,还需要对tomcat进行配置
• 进入tomcat的安装目录,修改D:/apache-tomcat-7.0.67/conf/tomcat-users.xml
• 修改如下:

Jenkins构建ant项目

Jenkin任务-部署(方案2 手工修改build.xml)
• 方案2:可以在build.xml中添加 deploy的 target
• Deploy的步骤:1,关闭tomcat(否则无法删除以前部署的包)
2 . 删除tomcat安装目录的webapp下面的旧的war包和解压后的文件夹
3 复制新的war包到tomcat安装目录的webapp下面
4 重启 tomcat
5 在浏览器中输入:http://localhost:8082/EMPI-Core 可以正常访问说明部署成功
• 返回修改EMPI-Core的配置,添加 war和 deploy 这两个target

Jenkins构建ant项目

Jenkin任务-部署 总结
• 方案1 (利用 jenkins 插件)
• 优点:不需要修改代码,不但可以部署到本地的tomcat,还可以部署到远程的tomcat,
• 缺点:在部署之后如果想加上selenium webdriver的python 测试脚本需要 另外构建一个任务专
门用于测试
• 方案 2 (手动修改build.xml)
• 优点:*定义部署过程,部署完之后可以继续加上selenium webdriver的python 测试脚本
• 缺点:不能部署到远程服务器
• 部署成功之后我们可以在本地输入 http://localhost:8082/EMPI-Core 就可以看到患者管理的页面
• 如果部署在远程的tomcat服务器,在本地可以输入 http:// 远程服务器IP:8082/EMPI-Core 来访问

Jenkin任务-立即构建
• 点击”保存“,这个jenkins任务就创建好了,返回首页
• 手工构建:选择项目”hs-pd-bi“ 旁边的黑色小箭头,然后在弹出的菜单中选择”立即构建“
• 注意:新创建的任务在保存之后会自动触发构建

Jenkins构建ant项目

Jenkin任务-立即构建
• 立即构建之后,这个任务会自动触发SVN,从SVN上面下载最新的代码

Jenkins构建ant项目

Jenkins构建ant项目

Jenkin任务-总结
• Jenkin 创建maven项目相对ant来说更简便些,以后开发的新的程序都会基于maven来做
• 对于maven项目,关键在于两个xml文件,setting.xml 和 pom.xml,
• setting.xml 配置好一次就可以了,pom.xml 对于每个小模块都会有一个
• pom.xml中最关键的是配置好,不过这个文件开发的都会大致写好,只
要看的懂就可以了
• 对于非maven的项目,其实开发的也可以在eclipse将其转换成maven的项目
• 对于非maven的项目使用ant来构建也是可以的,就是自己写build.xml比较复杂和麻烦
• 因此推荐在eclipse中将环境配置好后导出 build.xml, 再对其进行优化,比如加入 打包环节