[記錄]Apache Ant使用過程的總結

最近頻繁的作Web項目的部署,開發機是Windows系統,服務器在RedHat上,屢次使用SecureCRT工具後,決定直接使用Ant部署工具作這件事,同時遇到一個問題:Java程序程序中調用Ant API或者執行Ant 命令。java


     本文算是對近來使用Ant的一些總結和問題記錄。web


     1.Ant 是什麼?apache

 Apache Ant是一個將軟件編譯、測試、部署等步驟聯繫在一塊兒加以自動化的一個工具,大多用於Java環境中的軟件開發。tomcat

     2.Maven是什麼?服務器

       Maven是基於項目對象模型(POM),經過必定的描述信息來管理項目。app

3.Ant vs Maven?eclipse

       理解Ant和Maven的不一樣之處和各自的發展會有助於咱們作更好的選擇。webapp

http://ant.apache.org/
maven

http://maven.apache.org/ide

       Ant 和 Maven同屬於Aapche基金會下的項目,Maven是在借鑑Ant的優秀之處更上一層樓的面向軟件項目管理工具。



       下面的Ant配置文件作一個Web項目的編譯,打包,部署,清理工做。

<?xml version="1.0" encoding="UTF-8"?>
<project name="test" basedir="." default="makewar">
    <!--部署目標路徑,須要根據實際狀況設置-->
    <property name="webapp" location="D:\__dev\apache-tomcat-6.0.37\webapps" />
    <property name="warname" value="ROOT.war" />
    <!-- 引用的外部Jar包,須要根據實際狀況設置 -->
    <property name="libs" location="\libs\bin" />
    <property name="debuglevel" value="source,lines,vars" />
    <!--eclipse是WebRoot,Myeclipse是WebContent,須要根據實際狀況設置-->
    <property name="webroot" value="${basedir}/WebContent" />
    <property name="sources" value="${basedir}/src" />
    <!--輸出內容路徑設置-->
    <property name="dest" value="${basedir}/dest" />
    <property name="classes" value="${basedir}/build/classes" />
    <path id="classpath" description="jar包路徑">
        <fileset dir="${libs}">
            <include name="*.jar" />
        </fileset>
    </path>
    <target name="init" description="初始化構建目錄結構和拷貝文件">
        <mkdir dir="${dest}" />
        <mkdir dir="${classes}" />
        <copy todir="${dest}">
            <fileset dir="${webroot}">
                <include name="WEB-INF/**" />
                <include name="**" />
            </fileset>
        </copy>
        <copy todir="${classes}" verbose="true">
            <fileset dir="${sources}">
                <include name="*.xml" />
                <include name="*.Properties" />
                <include name="*.properties" />
            </fileset>
        </copy>
        <copy todir="${classes}/libs" verbose="true">
            <fileset dir="${libs}">
                <include name="*.jar"/>
            </fileset>
        </copy>
    </target>
    <target name="complie" depends="init" description="編譯">
        <javac srcdir="${sources}" destdir="${classes}" encoding="utf-8" classpathref="classpath">
        </javac>
    </target>
    <target name="makewar" depends="complie" description="打包部署">
        <war warfile="${basedir}/${warname}" webxml="${dest}/WEB-INF/web.xml">
            <lib dir="${libs}">
                <include name="*.*" />
            </lib>
            <classes dir="${classes}" />
            <fileset dir="${dest}" />
        </war>
    </target>
    <target name="clean" description="清理">
        <delete dir="${dest}">
        </delete>
        <delete dir="${classes}">
        </delete>
        <delete file="${basedir}/${warname}" />
    </target>
    <target name="move" description="部署war包到tomcat的webapp下">
        <copy todir="${webapp}" file="${basedir}/${warname}" overwrite="yes">
        </copy>
    </target>
    <target name="cleanweb" description="清理tomcat的webapp下的工程">
        <delete dir="${webapp}/${ant.project.name}" includeemptydirs="true">
        </delete>
        <delete file="${webapp}/${warname}">
        </delete>
    </target>
</project>


    1.如何搭建Ant呢?

     Ant是Apache基金會的項目,繼承這一向的命令模式,配置ANT_HOME,至於怎麼配置和JAVA_HOME配置同樣,網上好多時候要說配置CLASSPATH之類的路徑,其實在JDK1.6之後是不須要的

     命令行中:

     >ant

        Buildfile: build.xml does not exist!
        Build failed

      代表Ant環境搭建成功。

      命令行中 :  ant -help查看ant命令的詳細幫助信息。

    2.關於Ant的build文件

      Ant的build文件大體配置如左: 工程——>目標——>任務

     從上面的配置信息中能夠看出,target中包含着delete,copy,war等任務。

   3.關於Ant的build文件編寫

     如何編寫build文件呢?project,target,task的各個屬性,都寫什麼內容呢?

     一下N種途徑:

     使用支持Ant的IDE,具備提示功能;(最經常使用)

     使用Ant的Build文件的模版改動;(適合已經有成功部署能案例支持)

     使用Ant的幫助文檔,Ant幫助文檔中給出了詳細的列表,Ant is written in Java.於是咱們在使用Ant提供的各類任務工具都離不開Java程序的支持,所以經過API能夠查看到各類任務須要的屬性等信息。(不斷挖掘Ant強大的工具能力)

   4.關於Ant的任務

      在Ant的幫助文檔中有一個List of Task和 Library Dependencies,前者提供了Ant爲咱們提供的任務集,後者對前者使用時應該具有的一些條件作描述,好比:要執行Ant的email任務,咱們知道Java發送郵件須要mail.jar的支持,因此在執行該任務的時候須要在運行環境中添加mail.jar包。

     經過命令查看任務依賴環境:ant -diagnostics 將會有一個詳細的 Ant diagnostics report。

012459825.png

    經過diagnostics報告信息能夠看出在個人機器上要運行scp任務的時候須要依賴:com.jcraft.jsch.Logger類,該類來自jsch.jar 0.1.50,注意不一樣的Ant版本可能對應的依賴jar版本不一樣,這時候就應該查詢用戶指南。

    關於Ant任務的第三方依賴jar的相關信息獲取的方式,我的有個比較好的體驗先baidu,而後google這樣會很快解決問題,baidu提供了一些中文用戶的一些信息,google則提供英文信息更多些,瞭解一些因此然而後去官網查看或者源代碼庫纔不至於一頭霧水。

  5.ant命令

    ant的命令提供的各類執行build的參數,好比:-h(查看命令幫助), -version(查看Ant版本),-p(查看執行Build的工程信息),-lib(經過參數的放置添加依賴的jar路徑) 等

  6.Ant工具學習

    使用Ant工具來幫助咱們自動化的完成項目的編譯,打包,部署,經過用戶手冊和IDE的幫助這些任務能完成。至於學習Ant,經過我的體會,長時間不用了或者採用3中的模版方式來使用長此以往會使Ant在咱們心目中之能淪爲一個簡單的工具。

   完成咱們開發工程須要上面的一些方式,途徑就能夠解決咱們的問題,幫助咱們完成工程的自動化構建。  




j_0001.gif多想,多用,多發現發揮Ant的強力功效:

  •     經過了解AntAPI擴展Ant功能;

  •     多嘗試一些不經常使用的命令或者參數;

  •     多思考把Ant和Java開發緊密聯繫在一塊兒。

相關文章
相關標籤/搜索