Apache Ant 是由 Java 語言開發的工具html
構建ant環境:java
1). 安裝jdk,設置JAVA_HOME ,PATH ,CLASS_PATHsql
2). 下載ant 地址http://www.apache.org/apache
3). 設置ANT_HOME, PATH中添加ANT_HOME目錄下的bin目錄api
4). 測試驗證,開始-->運行-->cmd進入命令行-->鍵入 ant -vtomcat
bin--是ant的程序運行入口,若是沒有配置ANT_HOME的狀況下,能夠經過bin目錄中的bat程序進行運行build任務。oracle
etc--目錄中存放的都是一些xsl的輸出模板,建立一個增強的導出各類任務的XML輸出,使你的build文件擺脫過期的警告app
lib--目錄中存放的是ant程序須要依賴的jar包jsp
manual--目錄是ant程序的幫助文檔工具
每一個構建文件都有一個project標籤,有如下屬性:
- default:表示默認的運行目標,這個屬性是必須的。
- basedir:表示項目的基準目錄。
- name:表示項目名。
- description:表示項目的描述
相似於常量,能夠供給build.xml中的其餘標籤使用。有兩個特色:
- 大小寫敏感
- 不可改變,誰先設定,以後的都不能改變。
任務,一個project標籤下有一個或多個target標籤,表明任務,任務間能夠存在依賴關係。有以下屬性:
- name:用於標識,這個是必須的
- depends:用來指定所依賴的任務。
- if:當屬性設置時才執行該任務。
控制檯顯示
——「宏」,在Ant中是很是實用的,它的做用至關於java裏面的爲防止代碼重複而提取的公共方法。
須要注意的是:
一、在整個build文件裏,<macrodef>是和<target>平級的,上例中定義的<dealWithTestCases>若不將其放在<target>裏面,執行Ant時,腳本會直接執行這部分的宏代碼,而不會去執行<target>中定義的‘depands="base"‘依賴關係。
二、<macrodef>能夠調用其餘的<macrodef>,但不能夠調用<target>;<target>可用調用<macrodef>,也可用調用其餘<target>。
三、全部任務的特性經過@{}展開而不是${},它們能夠隨宏的每一次調用而改變,且只在宏定義程序塊內部可用。
record是Ant內置任務,用於監聽當前構建過程,並將輸出記錄到文件。能夠同時存在多個record,每個record都對應一個文件,文件名作爲record的惟一標識
屬性
name: 與record關聯的文件名。
action:record的行爲,開始記錄仍是中止記錄。首次調用record時,若是未設置此屬性,則默認爲start,若是後續調用未設置,則保留以前的狀態。可選值爲start、stop。
append:是否追加到文件,只有任務第一次調用時有效。可選值爲yes、no,默認爲no。
emacsmode:是否刪除日誌中的[taskname],默認爲false。
loglevel:日誌記錄的級別,隨着構建過程的進行,能夠更改日誌級別。
sequential是Ant內置任務,用於包含其餘的ant任務,sequential是一個容器任務。嵌套的任務按照順序執行,sequential的主要用途是支持在並行任務中順序執行一個子集中的任務。sequential任務沒有屬性,除了ant任務以外,不支持任務嵌套元素。任何有效的ant任務均可以嵌入到sequential任務中。
官網使用手冊(http://ant.apache.org/manual/)
1. classpath的設置 <property name="src" value="${basedir}/src/main/java" /> <!--定義CLASSPACH,編譯時用到你外部加入的包--> <path id="classpath"> <pathelement location="${src}" /> <fileset dir="${lib}" includes="***.jar" /> <fileset dir="${tomcat.lib}"> <include name="jsp-api.jar"/> </fileset> </path> 2.classpath的使用 <javac scdir="./src" destdir="./classes"> <classpath refid="project.classpath"/> </javac>
<?xml version="1.0" encoding="UTF-8"?> <!-- ===================================================================== Author: ytliug Date: 09/29/2018 ===================================================================== --> <project name="Database" default="ConnectOracle" basedir=""> <property name="oracleDriver" value="oracle.jdbc.driver.OracleDriver"/> <property name="oracleJar" location="WebContent\WEB-INF\lib\ojdbc5.jar" /> <property name="oracleUrl" value="jdbc:oracle:thin:@10.16.55.38:1521:v7rac"/> <property name="oracleUser" value="zssys" /> <property name="oraclePassword" value="zssys123" /> <property name="encoding" value="UTF-8" /> <property name="oracleFile" value="oracle.sql" /> <target name="ConnectOracle"> <echo message="Initializing database... If error occurs,let it be." /> <sql driver="${oracleDriver}" url="${oracleUrl}" userid="${oracleUser}" password="${oraclePassword}" classpathref="classpath" encoding="${encoding}" onerror="continue" autocommit="true" print="true" <transaction src="${oracleFile}"/> <path> <fileset dir="."> <include name="data*.sql"/> </fileset> </path> <!--transaction 和path兩選一 ---> </sql> </target> </project>
須要注意的是,若是你的sql文件中寫的是存儲過程,必定要加後面兩個屬性:
delimiter="/"
delimitertype="row"