在JavaEE項目中,咱們利用eclipse開發工具進行開發,將項目部署到遠程服務器上。手動部署比較麻煩。部署頻率比較高的話也會浪費開發時間。java
整體,打包部署不能一體。頻繁重複一樣的工做既浪費時間又作一些無用的工做,因此纔想到用自動化部署來實現。剛開始想到的是用jenkins,可是jenkins要求的環境比較高。咱們的項目不支撐。後來也想到了用maven來管理。可是現有的項目改造不少地方,時間上風險上不是我一個小小的程序員能說的算的。因此我纔想到了ant,ant只須要在IDE的項目建一個build.xml就能夠支撐。因此比較符合個人項目和個人想法。程序員
官方 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。web
配置ANT_HOME:D:\apache-ant-1.9.13 配置path:D:\apache-ant-1.9.13\binshell
附件-命令提示符-》輸入ant -version或者ant ,出現以下圖則安裝成功: apache
一、編譯工程src文件夾下的java文件,生成相應的class文件。緩存
二、將src下的非Java文件(配置文件)拷貝到war下。tomcat
三、將工程WebRoot下的除了class文件和jar包之外的文件,所有拷貝到war包的對應目錄下。服務器
四、將編譯生成的class文件,所有拷貝到war包WEB-INF/classes文件夾下。app
五、將工程lib中的jar包,所有拷貝到war包的WEB-INF/lib下。最後壓縮成war包。 ##步驟eclipse
三、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>