Jenkins系列之-—06 Ant構建

1、Ant 簡介&構建環境

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

2、目錄說明

bin--是ant的程序運行入口,若是沒有配置ANT_HOME的狀況下,能夠經過bin目錄中的bat程序進行運行build任務。oracle

etc--目錄中存放的都是一些xsl的輸出模板,建立一個增強的導出各類任務的XML輸出,使你的build文件擺脫過期的警告app

lib--目錄中存放的是ant程序須要依賴的jar包jsp

manual--目錄是ant程序的幫助文檔工具

3、Ant之build.xml配置詳解

  • project

每一個構建文件都有一個project標籤,有如下屬性: 
- default:表示默認的運行目標,這個屬性是必須的。 
- basedir:表示項目的基準目錄。 
- name:表示項目名。 
- description:表示項目的描述

  • property

相似於常量,能夠供給build.xml中的其餘標籤使用。有兩個特色: 
- 大小寫敏感 
- 不可改變,誰先設定,以後的都不能改變。

  • target

任務,一個project標籤下有一個或多個target標籤,表明任務,任務間能夠存在依賴關係。有以下屬性: 
- name:用於標識,這個是必須的 
- depends:用來指定所依賴的任務。

- if:當屬性設置時才執行該任務。

 
  • echo

控制檯顯示

  • MacroDef 

——「宏」,在Ant中是很是實用的,它的做用至關於java裏面的爲防止代碼重複而提取的公共方法。

須要注意的是:

一、在整個build文件裏,<macrodef>是和<target>平級的,上例中定義的<dealWithTestCases>若不將其放在<target>裏面,執行Ant時,腳本會直接執行這部分的宏代碼,而不會去執行<target>中定義的‘depands="base"‘依賴關係。
二、<macrodef>能夠調用其餘的<macrodef>,但不能夠調用<target>;<target>可用調用<macrodef>,也可用調用其餘<target>。

三、全部任務的特性經過@{}展開而不是${},它們能夠隨宏的每一次調用而改變,且只在宏定義程序塊內部可用。

  • Record

record是Ant內置任務,用於監聽當前構建過程,並將輸出記錄到文件。能夠同時存在多個record,每個record都對應一個文件,文件名作爲record的惟一標識

屬性
name: 與record關聯的文件名。
action:record的行爲,開始記錄仍是中止記錄。首次調用record時,若是未設置此屬性,則默認爲start,若是後續調用未設置,則保留以前的狀態。可選值爲start、stop。
append:是否追加到文件,只有任務第一次調用時有效。可選值爲yes、no,默認爲no。
emacsmode:是否刪除日誌中的[taskname],默認爲false。
loglevel:日誌記錄的級別,隨着構建過程的進行,能夠更改日誌級別。

  • sequential

  sequential是Ant內置任務,用於包含其餘的ant任務,sequential是一個容器任務。嵌套的任務按照順序執行,sequential的主要用途是支持在並行任務中順序執行一個子集中的任務。sequential任務沒有屬性,除了ant任務以外,不支持任務嵌套元素。任何有效的ant任務均可以嵌入到sequential任務中。

參考1

參考2

官網使用手冊(http://ant.apache.org/manual/

4、Ant build.xml中classpath

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>

5、應用

應用1:Ant構建前先執行sql腳本

<?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"

應用2:Ant實現sql腳本批量執行

Jenkins系列之-—08 自動構建以後實現SQL腳本批量執行

相關文章
相關標籤/搜索