前言:博主资历尚浅,不少东西都还在刚起步学习的阶段,这几天开发任务比较轻,就在本身window系统下,模拟部署远程服务器,利用Jenkins + Ant + Tomcat 搭建了一个自动发布部署的环境,特分享给你们。若是有哪些说的不对的地方,还请你们不吝赐教。java
Ant:apache-ant-1.9.1web
Jenkins:jenkins-2.46.3apache
Tomcat:apache-tomcat-8.0.43tomcat
系统:window7服务器
开发工具:IDEAapp
简述:这里只是在本地简单的构建了一个Web项目,并无使用 Maven 或者在 Git 上托管。webapp
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,fileset 84 是你要上传的文件,要利用ftp上传须要导入两个jar包,commons-net-1.4.0.jar、jakarta-oro-2.0.8.jar 85 --> 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>
备注:此处admin用户,须要具有manager-gui,manager-script,manager-jmx,manager-status权限,不然报错,用户在D:\apache-tomcat-8.0.43\conf 下tomcat-user.xml下配置,新增如下用户maven
<role rolename="manager-script" /> <user username="admin" password="nimda" roles="manager-script"/>
3. build 构建项目查看结果工具