1、工具版本
Ant:apache-ant-1.9.1
Jenkies:jenkins-2.46.3
Tomcat:apache-tomcat-8.0.43
系统:window7
开发工具:IDEA
2、Web项目
简述:这里只是在本地简单的构建了一个Web项目,并没有使用Maven或者在Git上托管。
3、在Web工程中加入Ant,利用Ant来自动构建部署
在项目的根目录下新建build.xml
1 <?xml version="1.0" encoding="UTF-8"?> 2 <project name="demo" default="deleteWar" basedir="."> 3 <property name="build" value="${basedir}/build"/> 4 <property name="build.class" value="${build}/classes"/> 5 <property name="src" value="${basedir}/src"/> 6 <property name="web" value="${basedir}/web"/> 7 <property name="lib" value="${web}/WEB-INF/lib"/> 8 9 <!--请将下面的路径改为你本地的路径-->10 <property name="webserver" value="D:\apache-tomcat-8.0.43"/>11 12 <!--定义CLASSPACH,编译时用到你外部加入的包-->13 <path id="classpath">14 <pathelement location="${src}"/>15 <fileset dir="${lib}" includes="***.jar"/>16 </path>17 18 <!--删除任务-->19 <target name="clean" description="删除">20 <echo message="删除目录"/>21 <delete dir="${build}"/>22 </target>23 24 <!--创建一个临时目录-->25 <target name="init" description="创建目录" depends="clean">26 <echo message="创建目录--以执行"/>27 <mkdir dir="${build.class}"/>28 </target>29 30 31 <!--编译java源文件-->32 <target name="compile" description="编译文件" depends="init">33 <echo message="编译文件"/>34 <javac srcdir="${src}" destdir="${build.class}">35 <classpath refid="classpath"/>36 <compilerarg line="-encoding GBK "/>37 </javac>38 </target>39 40 <!--打成WAR包-->41 <target name="generwar" depends="compile">42 <echo message="打成WAR"/>43 <war destfile="${build}/${ant.project.name}.war" webxml="${web}/WEB-INF/web.xml">44 <fileset dir="web"/>45 <lib dir="${lib}"/>46 <classes dir="${build.class}"/>47 </war>48 </target>49 50 51 <!--把WAR放到一个指定目录,这里是直接布署到TOMCAT服务器-->52 <target name="fabu" depends="generwar" description="发布">53 <copy file="${build}/${ant.project.name}.war" todir="${webserver}/webapps"/>54 </target>55 56 57 <!--把打好的WAR删除-->58 <target name="deleteWar" depends="fabu" description="删除服务器上的war">59 <delete dir="${build}"/>60 </target>61 62 <!--停止tomcat-->63 <target name="stop_tomcat">64 <echo>停止tomcat</echo>65 <exec executable="cmd" dir="${webserver}/bin" failonerror="false" append="true">66 <env key="CATALINA_HOME" path="${webserver}"/>67 <arg value="/c shutdown.bat"/>68 </exec>69 </target>70 71 <!--启动tomcat-->72 <!--这里做的主要是部署本地Tomcat服务器的过程,差不多的思路是先把war发布到webapps目录下,接着再重启服务器-->73 <target name="start_tomcat" depends="fabu,stop_tomcat">74 <echo>启动tomcat</echo>75 <exec executable="cmd" dir="${webserver}/bin" failonerror="false" append="true">76 <env key="CATALINA_HOME" path="${webserver}"/>77 <arg value="/c startup.bat"/>78 </exec>79 </target>80 81 <!--部署到远程服务器-->82 <!--这里模拟了一个利用ant部署到远程服务器的过程,server是ftp服务器IP地址,userid和password是ftp服务器的账号83 和密码,remotedir是你在建立服务器时,为服务器建立的目录,我建立的是D:\apache-tomcat-8.0.43\webapps,fileset84 是你要上传的文件,要利用ftp上传需要导入两个jar包,commons-net-1.4.0.jar、jakarta-oro-2.0.8.jar85 -->86 <target name="deploy" depends="generwar">87 <ftp server="127.0.0.1"88 userid="admin" password="123456" remotedir="/">89 <fileset dir="${build}">90 <include name="*.war"/>91 </fileset>92 </ftp>93 </target>94 </project>
运行Ant来部署项目
Ant 的 jar 包导入说明
这里再附属说一下,如何将自己的localhost建立成ftp服务器,我用的是 Quick Easy Ftp Server 4.0.0,下完这个软件后,按照提示下一步、下一步设置好账号和密码即可
4、Jenkies和Ant集成部署项目
自动部署需要一个容器,那Jenkins是怎么知道你的容器的呢?容器插件这个时候就要出场了!
首页-》系统管理-》管理插件
搜索deploy,很快就会找到这个deploy to container plugin,这里博主已经安装好了,就不在安装了,记住安装完记得重启!
构建一个自由风格的Jenkins项目,由于我没有托管Git或者使用maven。源码管理那边,只要将你的源码丢进Jenkins目录中workspace你的工程下即可(只有build一次,才会出现workspace目录)
自动发布部署项目。这里介绍两种方式,一种是利用Ant,一种是利用Jenkins将war包发布到对应服务器的容器中
利用Ant发布
利用Jenkins发布到对应容器中,无论是远程、还是本地
备注:此处admin用户,需要具备manager-gui,manager-script,manager-jmx,manager-status权限,否则报错,用户在D:\apache-tomcat-8.0.43\conf 下tomcat-user.xml下配置,新增以下用户
<role rolename="manager-script" /> <user username="admin" password="nimda" roles="manager-script"/>
3.build 构建项目查看结果