声明:本文档编写基于Jenkins版本Jenkins 2.303.1 ANT版本为 apache-ant-1.10.11
1.下载安装 Jenkins.msi 文件,并在window server上进行安装启动。详细步骤参考博客文章如下:关于构建非maven项目
2.手动安装插件,插件包在本文档中。插件列表如下所示:
3.由于项目并非是maven项目,所以项目编译还需要使用ANT 插件来进行编译。ANT插件编译需要编写build.xml编译文档。编译文档如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112<?xml version="1.0" encoding="UTF-8"?> <!-- build.xml文件: 每个需要构建的项目都要定义一个build.xml文件(默认的名称),对构建过程进行定义 project标签:build.xml文件只能有一个project标签,代表定义一个构建项目 name:项目名称 。 basedir:基准目录,构建过程中的相对路径都会参照这个路径来。按照一般的习惯,build.xml都会放在项目的根目录下, 因此这里使用"."标示当前目录,也就是相对路径的跟都是项目根目录,这样很方便。 default:对应某一个target,当使用该配置文件,运行ant的时候,会把这个target作为执行的入口。 有点类似Maven中指定程序的主文件。 property标签:对属性的定义,共后续的构建步骤中使用。类似于java 的 static final String name:属性名称,大消息敏感 value:属性值 target标签:一个构建项目可以包含多个target构建目标。一个构建目标,也可以依赖另外一个target构建目标。类似于Maven的goal name:目标名称 depends:需要依赖的target目标,通过这个属性,也就实现了target的顺序执行 if:表示仅当条件满足的时候才执行target目标 --> <project name="zhihuiyingke" basedir="." default="makewar"> <!-- 定义代码编译时需要依赖的lib包的路径 --> <property name="classpath_lib" value="WebContent/WEB-INF/lib" /> <!-- 定义lib包的路径 --> <path id="classpath"> <fileset dir="${classpath_lib}"> <include name="*.jar" /> </fileset> </path> <!-- 定义<javac> 的 debuglevel值 。设置编译信息中显示的内容 source:源文件名称 lines:源码中行号信息 vars:方法的局部变量信息 --> <property name="build.compiler" value="org.eclipse.jdt.core.JDTCompilerAdapter"/> <property name="debuglevel" value="source,lines,vars" /> <!-- 获取源码路径中源码时候需要去除java文件,在这里配置 --> <patternset id="no.java"> <exclude name="**/*.java" /> </patternset> <!-- 定义初始化过程 --> <target name="init"> <property name="build" value="build/"> </property> <property name="src" value="src"> </property> <!-- 删除build目录 --> <delete dir="${build}"> </delete> <!-- 创建build目录 --> <mkdir dir="${build}" /> <!-- 创建buildWEB-INF目录 --> <mkdir dir="${build}WEB-INF" /> <!-- 创建buildWEB-INFclasses目录 --> <mkdir dir="${build}WEB-INFclasses" /> <!-- 创建buildWEB-INFlib目录 --> <mkdir dir="${build}WEB-INFlib" /> <!-- 拷贝web文件到 build目录下 --> <copy todir="${build}"> <!-- 获取 WebContent目录下的文件 --> <fileset dir="${basedir}WebContent"> <include name="WEB-INF/**" /> <include name="**" /> </fileset> </copy> <!-- 拷贝配置文件到build/WEB-INF/classes目录下 --> <copy todir="${build}/WEB-INF/classes"> <!-- 去除java文件 --> <fileset dir="${src}"> <patternset refid="no.java" /> </fileset> </copy> </target> <!-- 定义complie目标,执行编译工作。依赖init目标 --> <target name="complie" depends="init"> <!-- 用于编译一个或多个Java文件 srcdir:源码路径,这里使用了上文定义的src变量 destdir:编译后的class文件输出的目录 classpathref:所使用的类路径,也就是编译源码的时候,需要依赖的class文件位置 debug:是否打印编译信息,默认是不打印的,如果设置为true,要与debugLevel组合进行设置 debugLevel:输出编译信息的规则 --> <javac srcdir="${src}" destdir="${build}/WEB-INF/classes" encoding="utf-8" classpathref="classpath" includeantruntime="on" source="1.8" target="1.8"> <compilerarg line="-Xlint:unchecked" /> <compilerarg line="-Xlint:deprecation" /> <compilerarg line="-Xlint" /> <compilerarg line="-XDignore.symbol.file" /> </javac> </target> <!-- 定义makewar目标,执行打包工作。依赖complie目标 --> <target name="makewar" depends="complie"> <!-- 打war包 warfile:war文件定义 webxml:webxml文件位置 --> <war warfile="zhihuiyingke.war" webxml="${build}/WEB-INF/web.xml"> <!-- 需要的lib文件 --> <lib dir="${build}/WEB-INF/lib"> <!-- 包含所有的文件 --> <include name="**" /> </lib> <fileset dir="${build}" /> </war> </target> </project>
由于使用jdk编译会需要引入很多的jar包,容易出错,所以我这里使用的是eclipse 的jdt进行项目编译。Jdt编译需要向ant中引入jar包。D:softapache-ant-1.10.11lib 目录下引入下列jar包。
其中,eclipse相关jar包可以从eclipse中进行拷贝(方法自行百度,这个好找)。其中jdtCompilerAdapter.jar 是从rt.ar中解压而得的。Rt.ar可以从maven 仓库中进行下载。
4.以上为环境准备工作。
5.打开Jenkins 页面,创建一个freeStyle project 风格的 项目
产生的项目会存放在以下目录中:
C:WindowsSystem32configsystemprofileAppDataLocalJenkins.jenkinsworkspaceyingkepingtai
由于 Windows Server 中登录用户的不同,造成前半部分的目录不一致,是Local以后的目录结构一致。
6.项目创建完成之后进行项目配置
点击配置进入项目配置 页面:
①在General中填写项目的基本描述信息。
②log location 中分别填写自动构建天数 和保持构建的最大个数。
③Repository URL中填写 项目的SVN地址。
④Credentials中添加子的账号密码,生成秘钥
7.构建环境(这里需要预先在Jenkins 的Global Tool Configuration中进行设置)
设置全局JDK和ANT 的环境变量。
8.JDK和ANT的环境变量设置完成以后回到项目设置目录进行,项目环境变量设置
9.紧接着就是设置在构建步骤中,新增Execute Windows batch command 批处理命令。该命令的目的是将原有的tomcat webapps 目录下需要重新编译的class文件以及其他项目文件从Jenkins workspace 中的项目目录中 拷贝覆盖过去。
Build文件夹中存放的是ant编译过后的项目。Build.xml文件在之前编写好之后,需要拷贝到Jenkins workspace 的项目目录里面才能使ant编译生效。
该批处理代码为:
1
2
3
4
5
6
7
8
9
10
11
12
13
14@echo off e: cd "E:envapache-tomcat-8.0.9" cd webapps if exist "E:envapache-tomcat-8.0.9webappszhihuiyingkeWEB-INFclasses" rd /s /q "E:envapache-tomcat-8.0.9webappszhihuiyingkeWEB-INFclasses" if exist "E:envapache-tomcat-8.0.9webappszhihuiyingkeWEB-INFpage" rd /s /q "E:envapache-tomcat-8.0.9webappszhihuiyingkeWEB-INFpage" if exist "E:envapache-tomcat-8.0.9webappszhihuiyingkejsp" rd /s /q "E:envapache-tomcat-8.0.9webappszhihuiyingkejsp" cd "C:WindowsSystem32configsystemprofileAppDataLocalJenkins.jenkinsworkspaceyingkepingtaibuildWEB-INF" xcopy "C:WindowsSystem32configsystemprofileAppDataLocalJenkins.jenkinsworkspaceyingkepingtaibuildjsp" "E:envapache-tomcat-8.0.9webappszhihuiyingkejsp" /s /e xcopy "C:WindowsSystem32configsystemprofileAppDataLocalJenkins.jenkinsworkspaceyingkepingtaibuildWEB-INFpage" "E:envapache-tomcat-8.0.9webappszhihuiyingke\WEB-INFpage" /s /e xcopy "C:WindowsSystem32configsystemprofileAppDataLocalJenkins.jenkinsworkspaceyingkepingtaibuildWEB-INFclasses" "E:envapache-tomcat-8.0.9webappszhihuiyingkeWEB-INFclasses" /s /e copy "C:WindowsSystem32configsystemprofileAppDataLocalJenkins.jenkinsworkspaceyingkepingtairesources" "E:envapache-tomcat-8.0.9webappszhihuiyingkeWEB-INFclasses" echo BoodBye
拷贝完成之后就需要重启tomcat服务器才行。
1
2
3
4
5
6@echo off e: cd "E:envapache-tomcat-8.0.9bin" call shutdown.bat echo shutdownover
1
2
3
4
5
6@echo on e: cd "E:envapache-tomcat-8.0.9bin" call startup.bat exit
这两个批处理需要再第一个拷贝完成之后才能进行。但是,此时最终要的也是最后一步。由于Jenkins的批处理命令再自己执行完毕之后,会杀死其内部所创建的所有子线程。所以再关闭tomcat服务器之后,调用startup.bat
是无法成功启动tomcat服务器的。
10.重启tomcat 服务器
由于Jenkins会自动杀死tomcat所以需要设置不让tomcat被杀死。
在manage nodes clouds中进行设置节点属性。
BUILD_ID:DontKillMe
同样,也需要在全局设置中进行设置
题目中需要用到的jar包 如果不想下载,可以扫描关注本人的微信公众号回复 ANT
即可获取。码字不易,增加个关注量,好满足一下我的虚荣心,哈哈。
最后
以上就是怡然眼睛最近收集整理的关于使用Jenkins 在WindowsServer上构建非Maven Javaweb项目的全部内容,更多相关使用Jenkins内容请搜索靠谱客的其他文章。
发表评论 取消回复