- 解壓文件夾apache-ant-1.8.2.rar,將解壓的文件夾放在D盤
修改環境變量:右擊計算機==》屬性==》高級系統設置==》高級==》環境變量
PATH D:\apache-ant-1.8.2\bin
ANT_HOME D:\apache-ant-1.8.2
CLASSPATH D:\apache-ant-1.8.2\lib
- ant驗證:win+R – cmd
輸入如下命令:ant
如果出現如下內容,說明安裝成功:
Buildfile: build.xml does not exist!
Build failed
說明ant安裝成功!因爲ant默認運行build.xml文件,這個文件需要我們建立。
查看版本:ant -version
但如果出現
‘ant’ 不是內部或外部命令,也不是可運行的程序或批處理文件
說明安裝失敗
拷貝build.xml文件放在D盤根目錄下,修改裏面的svn路徑以及svn的用戶名密碼,同時在D盤新建文件夾cfiles,該文件夾新建兩個文件夾antTemp和publish,一個放從svn拷貝的項目,一個放打成war包的文件 - 運行xml文件:win+R --cmd 先找到build.xml的目錄下然後輸入如下命令:
ant -buildfile build.xml;
build.xml文件
<?xml version="1.0" encoding="utf-8"?>
<project basedir="/cfiles/antTemp" name="myProject" default="packageWar">
<!-- SVN相關屬性 -->
<!-- SVN 用戶名-->
<property name="svn.username" value="quanmin" />
<!-- SVN密碼 -->
<property name="svn.password" value="Qm123456" />
<!-- SVN需要的一些jar包,我把它放到ant目錄下了,你也可以放到其他目錄 -->
<property name="svn.libPath" value="d://apache-ant-1.8.2/svnlib" />
<!-- SVN地址 -->
<property name="svn.repository" value="https://192.168.10.123/svn/test" />
<!-- 項目名稱 -->
<property name="projectName" value="testssm" />
<!-- SVN檢出目錄 -->
<property name="svn.checkoutDir" value="/cfiles/antTemp" />
<property name="svn.checkOutProject" value="${svn.checkoutDir}/${projectName}" />
<!-- 構建相關屬性 -->
<!-- war包保存目錄 -->
<property name="dir.warPath" value="/cfiles/publish" />
<!-- javaee.jar包所在目錄,如果是web項目的話,編譯的時候會用到它,我把它放到ant目錄下了,你也可以放到其他目錄 -->
<property name="dir.javaee" value="d://apache-ant-1.8.2/je" />
<!-- 項目名稱項目中源文件夾,我這裏有兩個,src和config,一個裏邊是java代碼,一個是配置文件-->
<property name="dir.src" value="${svn.checkOutProject}/src" />
<!--property name="dir.config" value="${svn.checkOutProject}/config" /-->
<!--WebRoot目錄-->
<property name="dir.web" value="${svn.checkOutProject}/WebRoot" />
<!--項目依賴的jar包-->
<property name="dir.lib" value="${dir.web}/WEB-INF/lib" />
<!--編譯後的class文件保存目錄-->
<property name="dir.classes" value="${dir.web}/WEB-INF/classes" />
<property name="ContextRoot" value="ROOT" />
<!-- 日期格式yyyyMMdd 主要是爲了生成目錄 -->
<tstamp prefix="tempPro.">
<format property="today" pattern="yyyyMMdd" />
</tstamp>
<!-- 項目編譯依賴的jar包,包括lib下的jar和javaee.jar -->
<path id="applib">
<fileset dir="${dir.lib}">
<include name="**/*.jar" />
</fileset>
<fileset dir="${dir.javaee}">
<include name="javaee.jar" />
</fileset>
</path>
<!-- SVNKit相關包lib -->
<path id="svnlib">
<fileset dir="${svn.libPath}">
<include name="*.jar" />
</fileset>
</path>
<!-- SVN檢出項目代碼 -->
<target name="svnCheckout">
<echo message="刪除原始文件,重新Checkout" />
<delete dir="${svn.checkOutProject}" />
<echo message="Checkout最新代碼" />
<java classname="org.tmatesoft.svn.cli.SVN" dir="${svn.checkoutDir}" fork="true">
<arg value="checkout" />
<arg value="--username" />
<arg value="${svn.username}" />
<arg value="--password" />
<arg value="${svn.password}" />
<arg value="${svn.repository}/${projectName}" />
<classpath refid="svnlib" />
</java>
</target>
<!-- 刪除classes目錄,爲編譯構建做準備 -->
<target name="clean">
<delete dir="${dir.classes}" />
</target>
<!-- 編譯構建項目 -->
<target name="compile" depends="svnCheckout,clean">
<echo message="編譯Java文件" />
<mkdir dir="${dir.classes}" />
<!--
如果有多個源碼包的話,每個源碼包都要編譯,我這裏只有src
destdir:編譯後的class文件保存目錄
srcdir:源碼目錄
excludes:排除文件(這裏將svn相關的一些文件排除)
includeAntRuntime:指出是否應在類路徑中包括 Ant 運行時程序庫,默認爲 yes
classpath:導入需要使用的jar包
-->
<javac encoding="utf-8" destdir="${dir.classes}" srcdir="${dir.src}"
excludes="**/.svn/**" includeAntRuntime="false">
<classpath refid="applib" />
</javac>
<!--如果有多個源碼包的話,每個源碼包都要編譯,我這裏只有src-->
<echo message="拷貝資源文件" />
<copy todir="${dir.classes}" preservelastmodified="true">
<!--fileset dir="${dir.config}" excludes="**/*.java">
</fileset-->
<fileset dir="${dir.src}" excludes="**/*.java">
</fileset>
</copy>
</target>
<!-- 打包 -->
<target name="packageWar" depends="compile">
<war destfile="${dir.warPath}/${tempPro.today}/${projectName}.war"
basedir="${dir.web}" />
<!-- echo message="刪除文件" />
<delete dir="${svn.checkOutProject}" /-->
</target>
<!-- 打包
<target name="makewar" depends="complie">
<war warfile="${build}/newbssqyl.war" webxml="${build}/WEB-INF/web.xml">
<lib dir="${build}/WEB-INF/lib">
<include name="**" />
</lib>
<classes dir="${build}/WEB-INF/classes"/>
<fileset dir="${build}"/>
</war>
</target>
-->
<!--壓縮,打包
<target name="packageWar" depends="compile" description="======compress j2ee war file======">
<mkdir dir="${svn.checkOutProject}" />
<war destfile="${dir.warPath}/${tempPro.today}/${ContextRoot}.war" webxml="${dir.web}/WEB-INF/web.xml">
<fileset dir="${dir.web}" />
<classes dir="${dir.classes}" />
<lib dir="${dir.lib}" />
</war>
</target>-->
<!-- 發佈war包 這個是IBM的WebSphere 發佈用的,利用它的wsadmin發佈,我這裏是tomcat 所以註釋掉了
<target name="updateApp" description="Uninstall an Enterprise Application" depends="packageWar">
<sshexec host="192.168.1.123" username="useranme" password="password" trust="true" command="/opt/IBM/WebSphere/AppServer/profiles/BPS/bin/wsadmin.sh -instance instance -c '$AdminApp update CRMBps_NEW_war app {-operation update -node nodeBPS -contextroot ${ContextRoot} -contents ${dir.warPath}/${ContextRoot}.war}'" />
</target>
-->
</project>