利用ant进行打包和远程tomcat部署

背景

在JavaEE项目中,我们利用eclipse开发工具进行开发,将项目部署到远程服务器上。手动部署比较麻烦。部署频率比较高的话也会浪费开发时间。

部署过程:

  • 1、eclipse导出war包,或者利用工具打成war包,
  • 2、关闭服务器。
  • 3、清理服务器原有的war包和缓存等,
  • 4、利用ftp工具将war包上传到服务器(xshell、filezilla )。
  • 5、然后启动服务器

为什么选ANT

总体,打包部署不能一体。频繁重复同样的工作既浪费时间又做一些无用的工作,所以才想到用自动化部署来实现。刚开始想到的是用jenkins,但是jenkins要求的环境比较高。我们的项目不支撑。后来也想到了用maven来管理。但是现有的项目改造很多地方,时间上风险上不是我一个小小的程序员能说的算的。所以我才想到了ant,ant只需要在IDE的项目建一个build.xml就可以支撑。所以比较符合我的项目和我的想法。

ANT打包和部署过程

  • ANT安装

官方 http://ant.apache.org/bindownload.cgi下载新版(目前为Ant1.10.1)的ant,我下载的是1.9.13 得到的是一个apache-ant-1.9.13.zip的压缩包。将其解压到你的硬盘上,例如:D:\apache-ant-1.9.13。

  • 配置环境变量

配置ANT_HOME:D:\apache-ant-1.9.13 配置path:D:\apache-ant-1.9.13\bin

  • 验证ant安装成功

附件-命令提示符-》输入ant -version或者ant ,出现如下图则安装成功:

生成war包的总体思路

1、编译工程src文件夹下的java文件,生成相应的class文件。

2、将src下的非Java文件(配置文件)拷贝到war下。

3、将工程WebRoot下的除了class文件和jar包以外的文件,全部拷贝到war包的对应目录下。

4、将编译生成的class文件,全部拷贝到war包WEB-INF/classes文件夹下。

5、将工程lib中的jar包,全部拷贝到war包的WEB-INF/lib下。最后压缩成war包。 ##步骤

  • 1、创建build.xml 如下图
  • 2.配置Ant环境 以前在6.0的时候,我们会在classpath中加入catalina-ant包,具体操作 左边:ant-》runtime -》右边 Global Entries -》add External JARs 加入Catalina-ant包,只需要这一个就行,但是现在7.0得需要再加几个jar包才可以,lib/catalina-ant.jar,lib/tomcat-coyote.jar,lib/tomcat-util.jar,bin/tomcat-juli.jar,这些jar包都在tomcat的lib下。

  • 3、build.xml的脚本代码如下:

      <?xml version="1.0" encoding="UTF-8"?>
      <!-- 
        <project></project>
        basedir:指的是build.xml所在的路径
        default:target标签的name
      -->
      <project name="woscancode" default="woscancodeWar" basedir=".">
      	<description>
      	 woscancode make a war package!
         </description>
    
      	<property name="build" value="${basedir}/build"></property>
      	<!-- 定义属性,打成war包的名称。 -->
      	<property name="warFileName" value="woscancode.war"></property>
      	<property name="classpath_lib" value="WebRoot/WEB-INF/lib" />  
      	<property name="tomcat_classpath_lib" value="D:/apache-tomcat-7.0.69/lib" /> 
      	<property name="jdk_classpath_lib" value="C:/Program Files/Java/jdk1.7.0_79/lib/missioncontrol/plugins" />  
      	<property name="jdk_extend_lib" value="C:/Program Files/Java/jdk1.7.0_79/jre/lib" />  
    
      	<!--path:用于回头访问该项目的后缀路径:  http://ip:port/path
      		url:远程Tomcat的管理页面路径 http://ip:port/manager
      		username、password 这个是填写你所设的上传用户的账号和密码
      	-->
      	<!-- Configure the context path for this application -->
      	<property name="path" value="/woscancode"/>
      	<property name="url" value="http://134.32.76.7:8083/manager/text" />
      	<property name="username" value="admin" />
      	<property name="password" value="admin" />
    
      	<!-- 定义路径,编译java文件时用到的jar包。 -->
      		<path id="project.lib">
      			<fileset dir="${jdk_extend_lib}">    
      				 <include name="*.jar"/>    
      			</fileset>
      			<fileset dir="${classpath_lib}">    
      				<include name="*.jar"/>    
      			</fileset> 
      			<fileset dir="${tomcat_classpath_lib}">    
      				<include name="*.jar"/>    
      			</fileset> 	
      			<fileset dir="${jdk_classpath_lib}">    
      						<include name="*.jar"/>    
      			</fileset> 
      			<fileset dir="${basedir}/WebRoot/WEB-INF/lib">
      				<include name="**/*.jar"/>
      			</fileset>
      	  </path>
      	<!-- 定义任务,清空任务:清空原有的class文件,创建新的build路径。 -->
      	<target name="clean">
      		 <delete dir="${build}/class" includeEmptyDirs ="true"/>
      		 <mkdir dir="${build}" />
      	</target>
      	<!-- 定义任务,编译src文件夹中的java文件,编译后的class文件放到创建的文件夹下。 -->
       <!--
      		javac    编译Java源文件
      			srcdir:源文件目录 
      			destdir:输出目录
      			includes:告诉Ant编译过程中编译哪些位置的源文件(其他位置被忽视)
      			excludes:告诉Ant编译过程中忽略那些位置的源文件
      			debug:是否开启调试信息
      			source:强调开发源代码的JDK版本
      			target:强调编译后的Class文件应该支持的JDK版本
      			compiler:指定编译器(不一定非得使用Sun的标准编译器进行编译)
      	-->
      	<target name="compile" depends="clean">
      		<javac srcdir="${basedir}"  destdir="${build}/classes"  source="1.7" target="1.7" encoding="UTF-8" includeantruntime="false">
      			<classpath refid="project.lib"></classpath>
      			<compilerarg line="-XDignore.symbol.file"/>
      	  </javac>
      	<!--讲src/config不用编译的配置文件信息copy到相应的目录下 -->
      	<copy todir="${build}/classes" >
      		  <fileset dir="${basedir}/config">
      				<include name="**/**.*" />
      				<exclude name="**/*.jar"/>
      		   </fileset>
      	</copy>
      	 </target>
      	<!-- 定义默认任务,将class文件集合成jar包。 -->
      	<target name="woscancodeWar" depends="compile"> 
      		  <!-- 删除原有war包。 -->
      			<delete dir="${build}/${warFileName}" />
      			<war warfile="${build}/${warFileName}" webxml="${basedir}/WebRoot/WEB-INF/web.xml">    
      				 <!-- 将非jar和非class文件拷贝到war包的对应路径下。 -->
      					<fileset dir="${basedir}/WebRoot">
      						<include name="**/**.*" />
      						<exclude name="**/*.jar"/>
      						<exclude name="**/*.class"/>
      					</fileset>
      				<!-- 将jar和class文件拷贝到war包的对应路径下。 -->
      			<lib dir="${basedir}/WebRoot/WEB-INF/lib" />
      			<classes dir="${build}/classes"/>
      			</war> 
      		</target>
    
      	<!-- Configure the custom Ant tasks for the Manager application -->
      		<target name="_def_tomcat_tasks">           
      			<!-- tasks: deploy,undeploy,reload,stop,start,list,roles,resources -->          
      			<taskdef name="deploy"    classname="org.apache.catalina.ant.DeployTask" />           
      			<taskdef name="list"      classname="org.apache.catalina.ant.ListTask" />           
      			<taskdef name="reload"    classname="org.apache.catalina.ant.ReloadTask" />           
      			<taskdef name="resources" classname="org.apache.catalina.ant.ResourcesTask" />  
      			<!-- <taskdef name="roles"     classname="org.apache.catalina.ant.RolesTask" /> -->      
      			<taskdef name="start"     classname="org.apache.catalina.ant.StartTask" />          
      			<taskdef name="stop"      classname="org.apache.catalina.ant.StopTask" />           
      			<taskdef name="undeploy"  classname="org.apache.catalina.ant.UndeployTask" />   
      	</target>
    
      	<target name="redeploy" description="Remove and Install web application" depends="_def_tomcat_tasks">   
      		<antcall target="undeploy"/>         
      		<antcall target="deploy"/>   
      	</target>
    
      	<target name="deploy" description="Install web application" depends="_def_tomcat_tasks,woscancodeWar">
      		<deploy url="${url}" username="${username}" password="${password}" path="${path}" war="${build}/${warFileName}" />
      	</target>
      	<target name="undeploy" description="Remove web application" depends="_def_tomcat_tasks">
      	   <undeploy url="${url}" username="${username}" password="${password}" path="${path}" />
      	</target>
    
      	<target name="reload" description="Reload web application" depends="_def_tomcat_tasks,woscancodeWar">     
      		<reload  url="${url}" username="${username}" password="${password}" path="${path}"/>  
      	</target> 
    
      </project>
    

转载于:https://my.oschina.net/u/1421591/blog/2988541

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值