概述
声明:本文档编写基于Jenkins版本Jenkins 2.303.1 ANT版本为 apache-ant-1.10.11
1.下载安装 Jenkins.msi 文件,并在window server上进行安装启动。详细步骤参考博客文章如下:关于构建非maven项目
2.手动安装插件,插件包在本文档中。插件列表如下所示:
3.由于项目并非是maven项目,所以项目编译还需要使用ANT 插件来进行编译。ANT插件编译需要编写build.xml编译文档。编译文档如下:
<?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编译生效。
该批处理代码为:
@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服务器才行。
@echo off
e:
cd "E:envapache-tomcat-8.0.9bin"
call shutdown.bat
echo shutdownover
@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 在WindowsServer上构建非Maven Javaweb项目所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复