<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    輕松

    記述我學習java的里程

    常用鏈接

    統計

    積分與排名

    友情鏈接

    最新評論

    [轉帖]ant入門:我喜歡簡單:ant - java 構建工具

      管理你的代碼,doc文件,編譯,配置等開發工作你是怎末做的:自己管理源目錄,編譯文件,copy,實施...
    在window寫bat,在unix寫shell?
         可惜我不怎末會寫。所以我制作一個ejb的過程是這樣的:
    寫代碼->寫個bat編譯代碼->組織文件(ejb-jar.xml,jboss.xml...)->壓縮文件生成jar文檔->
    實施......(還有同樣的測試過程)(為甚末不用jbuild?)

        這中間每次修改都要經過重復的無數次手工copy,paste...過程,好累,好花時間。可我確實不想去
    學腳本編寫,unix,linux下我還得重學,太累。

        如果你和我一樣希望自動執行預定義的動作卻又不想太累,那末,我覺得ANT工具不錯:
    它可以以相同的用法用在不同平臺(跨平臺)。它是JAVA做的,免費的,開源的,據說網上已經成了事實的JAVA
    構建標準,還聽說高手都用它...... ^_^

        我花了2天時間才掌握了它的基本用法,我希望你能通過我的文章和試驗花半天時間就掌握它。

    內容:
       下載,安裝 
       hello ant 
       hello ant 進級 
       參考及下載 

    下載,安裝
       又下載?又是一大堆參數變量?  :(
        http://jakarta.apache.org/ant/index.html ;它是apache的java子項目"jakarta"的子項目.你可以選擇
    當前的版本,目前我是1.5版,window版,以下就用它講。

        解壓后ant_home用來方便訪問。并確保你也設置了java_home 。
        set ant_home=D:\java\kit\ant\jakarta-ant-1.5.1    這是我的目錄    

        就這些,簡單吧。

    hello ant

    我們要開發一個java類:其內容只有一句,輸出"hello ant"字符串。并使用ant完成編譯和運行工作,這個例子只是為了跑通ant,不附加多余的東西。

    下圖為文件組織,請建立相應的目錄,并編寫HelloAnt.java

    按照人家老外的文件組織規則咱也照搬。

    hello.ant.HelloAnt.java:
    [code]
    package hello.ant;

    public class HelloAnt{
        public static void main(String[] args){
            System.out.println("hello ant,ant 的第一次接觸,好棒!");
        } 
    }
    [/code]

    在項目根目錄(hello-ant\)寫1個文件:ant執行配置文件build.xml:

    <?xml version="1.0"  encoding="GB2312" ?>

    <!-- 一個項目,可包含很多任務組(target) -->
    <project default="main" basedir=".">

        <!-- 項目中的一個任務組,可包含很多任務(task:javac,java...) -->
        <target name="main">

            <!--編譯-->
            <javac srcdir="src\main\hello\ant" destdir="build\classes"/>

            <!--運行-->
            <java classname="hello.ant.HelloAnt">
                <classpath>
                    <pathelement path="build\classes"/>
                </classpath>
            </java>

        </target>
    </project>



    ok,一切大功告成,哦,不,還沒有運行它。

    dos下進入hello-ant的目錄,即build.xml所在的目錄,我們要用ant工具執行它 , 

    執行: %ant_home%/bin/ant -file build.xml     用ant工具執行當前目錄下的配置文件build.xml 

    或  :ant -file build.xml                    你如果設置%ant_home%/bin到path中

    這次ok了,這是答案:

    命令提示符窗口 
    D:\temp\hello-ant>ant -file build.xml
    Buildfile&: build.xml

    main:
    [javac] Compiling 1 source file to D:\temp\hello-ant\build\classes
    [java] hello ant,ant 的第一次接觸,好棒!

    BUILD SUCCESSFUL
    Total time: 2 seconds
    D:\temp\hello-ant>  

    檢查一下build/classes目錄,哦,看到編譯過的文件就在這里:
    build/classes/hello/ant/HelloAnt.class.


    hello ant 進級

    (此段比較廢話,可以略過)
    你也許會說:這末簡單的工作寫個批處理不就得了,又xml又ant的,把我的時間都浪費完了,我用jbuild或
    webShpere不就得了,怎末說你才明白呢?反正網上開源項目大多數都用ant,你總不能給人家個*.jpx吧,
    而且這樣的工具太貴,受不了(當然用D的兄弟不怕^_^ ),而且ant可以讓你明確的管理和自動化所有的東西:
    編譯-實施-測試...,哎,稍微麻煩一點點,但節約你以前花在零碎的copy,paste上的時間.而且我發現管理
    代碼的質量有所提高.

    我們要改進build.xml,讓它做更多的事情:

    定義全局變量 
    初始化,主要是建立目錄 
    編譯  (已有) 
    打包為jar 
    建立API document.tion 
    生成distribution產品 
    凡事都講究平衡,你要ant給你做更多事,當然要累一點點,不過只用累一次,以后的代碼修改后的構建都是"一鍵式"完成,我們制作一個hello的簡單例子,你可以自己做j2ee的練習。

    我們要擴充目錄結構,使它更像回事:

    ant處理編譯之前的目錄:
    按此在新窗口瀏覽圖片

    ant處理之后的目錄:
    按此在新窗口瀏覽圖片

    圖中:\src,\docs,\lib是自己組織的文件結構,\build,\dist是ant動態生成的成品。

    \src                     源文件:java源,script源,jsp源,xml配置.....
    \src\main         java源
    \src\script     window,unix,liunx的執行script,我們的簡單只有一個:
                      run.bat:  java hello.ant.HelloAnt

    \docs                手寫說明文檔
    \lib                   程序所需類庫的jar,比如j2ee.jar,mail,jar...

    \build               用ant動態生成的構建目錄
    \build\classes  編譯的類文件
    \build\docs         copy "\docs"的手寫說明文檔,和ant生成的api文檔
    \build\lib           放置我們自己的HelloAnt.class打包成品hello-ant.jar

    \dist\bin        copy "\src\script" 得執行文件
    \dist\docs      copy "\build\docs" 的文檔
    \dist\lib         除了copy "\build\lib"下的hello-ant.jar外,
                                  還應copy "\lib"的程序所需jar,這里我們沒有。

    以上是我學老外的文件組織,大家可以按照自己的愛好組織

    我們編寫必要的文件: 
    hello.ant. HelloAnt.java:已有
    \src\script.bat:

    @echo off
    echo ========================================================
    echo   請先設置 Environment
    echo .
    echo   JAVA_HOME: %JAVA_HOME%
    echo ======================================================

    %java_home%\bin\java -classpath ..\lib\hello-ant.jar  hello.ant.HelloAnt

    pause 


    \docs\index.html 隨便寫一個手寫的文檔 :
    \build.xml 配置文件:
    [code]
    <?xml version="1.0"  encoding="GB2312" ?>
    <!--
        =======================================================================
          hello-ant 項目 ,學習ant工具的第2個build file.

          參照ant的jakarta-ant-1.6alpha的build.xml

          Copyright (c) 2002 The Neusoft Software Foundation.  All rights
          reserved.

        =======================================================================
    -->

    <!--
        文檔結構為:
        <project>
            <property/>               全局變量的定義
            <property/>...

            <target name="1">         任務組(tasks)
                <javac></javac>       一項javac任務
                ...
                <oneTask></ontTask>   一項其它任務
            </target>

            <target name="2">
                <javac></javac>
                ...
                <oneTask></ontTask>
            </target>
        </project>

        project代表一個項目,
        default:運行到名稱為"dist"的target(任務組)
        basedir:基準路徑。
    -->
    <project default="dist" basedir=".">

    <!--
        ===================================================================
          定義屬性(property tasks)
          最好把用到的路徑呀,名稱呀都在這里定義成全局變量
          例:定義
              <property name="a" value="hello"/>
          以后就可以這樣用它:
              <property name="b" value="${a}/b"/>
          現在:b=="hello/b"
        ===================================================================
    -->

        <!--主要的系統環境屬性-->
        <property environment="env"/><!--取window,unix...的環境變量-->
        <property name="java.home" value="${env.JAVA_HOME}"/>
        <property name="ant.home"  value="${env.ANT_HOME}"/>

        <!--主要的app環境屬性-->
        <property name="app.name"      value="hello-ant"/>
        <property name="app.jar"       value="${app.name}.jar"/>
        <property name="app.copyright" value=" Copyright (c) 2002 The Neusoft Software Foundation.  All rights reserved."/>


        <!--app中src的屬性-->
        <property name="src.dir"    value="src" />
        <property name="src.main"   value="${src.dir}/main"/>
        <property name="src.script" value="${src.dir}/script"/>

        <!--app用到的lib-->
        <property name="lib.dir" value="lib"/>

        <!--app的build目錄中-->
        <property name="build.dir"      value="build" />
        <property name="build.classes"  value="${build.dir}/classes"/>
        <property name="build.docs"     value="${build.dir}/docs"/>
        <property name="build.docs.api" value="${build.docs}/api"/>
        <property name="build.lib"      value="${build.dir}/lib"/>

        <!--app的dist (distribution) 目錄中-->
        <property name="dist.dir"      value="dist"/>
        <property name="dist.bin"      value="${dist.dir}/bin"/>
        <property name="dist.docs"     value="${dist.dir}/docs"/>
        <property name="dist.lib"      value="${dist.dir}/lib"/>

        <!--app的docs目錄中-->
        <property name="docs.dir"      value="docs"/>

        <!--
        定義一組路徑以后可以通過id重用這組路徑 ,例:
        <javac srcdir="src/main" destdir="build/classes">
                <classpath refid="classpath"/>
        </javac>
        -->
        <path id="classpath">
            <!--本項目只有一個java,用不上classpath,這里只是做個例子-->
            <pathelement location="${build.classes}"/>
            <pathelement path="${java.home}/lib/tools.jar"/>
        </path>

    <!--
        ===================================================================
          init 準備目錄(File Tasks)
          主要的目錄結構通常是不會變的,一起生成他們
        ===================================================================
    -->
        <target name="init">
            <!--清除以前目錄-->
            <delete dir="${build.dir}" failonerror="false" />
            <delete dir="${dist.dir}"  failonerror="false"/>

            <!--準備目錄-->
            <mkdir dir="${build.dir}"/>
            <mkdir dir="${build.classes}"/>
            <mkdir dir="${build.docs}"/>
            <mkdir dir="${build.docs.api}"/>
            <mkdir dir="${build.lib}"/>

            <mkdir dir="${dist.dir}"/>
            <mkdir dir="${dist.bin}"/>
            <mkdir dir="${dist.lib}"/>

        </target>

    <!--
        ===================================================================
          Build the code (Compile Tasks,File Tasks)
        ===================================================================
    -->
        <target name="build" depends="init">
            <!--編譯-->
            <javac srcdir="${src.main}" destdir="${build.classes}">
                <classpath refid="classpath"/>
            </javac>
        </target>

    <!--
        ===================================================================
          打包文檔(Archive Tasks)
          Create the project jars: xxx1.jar and xxx2.jar
        ===================================================================
    -->
       <target name="jars" depends="build">
            <jar basedir="${build.classes}" jarfile="${build.lib}/${app.jar}"/>
        </target>

    <!--
         ===================================================================
           Creates the API document.tion
         ===================================================================
    -->
        <target name="javadocs"
                depends="jars"
                description="--> creates the API document.tion">
            <!--copy docs 手冊... -->
            <copy todir="${build.docs}">
                <fileset dir="${docs.dir}"/>
            </copy>

            <javadoc packagenames="hello.ant.*"
                     sourcepath="${src.main}"
                     defaultexcludes="yes"
                     destdir="${build.docs.api}"
                     author="true"
                     version="true"
                     use="true"
                     windowtitle="Docs API">
                 <doctitle><![CDATA[<h1>hello ant Docs API</h1>]]></doctitle>
                 <bottom><![CDATA[<i>${app.copyright}</i>]]></bottom>
                 <tag name="todo" scope="all" description="To do:" />
             </javadoc>
        </target>

    <!--
         ===================================================================
           Create the distribution that can run (Archive Tasks)
           主要是從各目錄中把該copy的copy上
         ===================================================================
    -->
       <target name="dist" depends="javadocs">
            <!--copy bin 執行文件 -->
            <copy todir="${dist.bin}">
                <fileset dir="${src.script}/"/>
            </copy>
            <copy todir="${dist.docs}">
                <fileset dir="${build.docs}/"/>
            </copy>
            <!-- copy lib 文件 -->
            <copy todir="${dist.lib}">
                <fileset dir="${build.lib}/"/>
            </copy>

        </target>
    <!--
         ===================================================================
          Cleans everything(File Tasks)
          例如可以刪除build中的文件,留給你發揮吧
         ===================================================================
    -->

    </project>
    [/code]

    build.xml多了些,但其實很簡單:(注釋比較詳細可以參照,這里再簡單說一下)

    一個build.xml包含一個工程的自動化處理的完整xml說明,并且基本由3種東東組成:

    <project >

        1.全局變量的定義
        <property/>

        2.任務組
        <target>
            3.許多單項任務... 像copy,delete,javac,jar...
            <task1/>
            <task2/>
            <task3/>
        </target>

    </project>


    參考及下載:

    本文程序:第1個hello-ant

    本文程序:第2個進階的hello-ant

    ant最新下載:
    http://jakarta.apache.org/ant/index.html ;

    ant具體的編寫方法參考ant手冊以下2部分就形,
    http://jakarta.apache.org/ant/manual/using ;使用說明
    http://jakarta.apache.org/ant/manual/coretasklist.html ;核心tasks
    其他一大堆東西你要看也行。不過我覺得比較浪費時間。
    http://jakarta.apache.org/ant/manual/index.html ; 手冊index

    huihoo.com翻譯改編的ant/manual/using
    http://www.huihoo.com/java/ant.html ;

    用ANT構造Application作者:余斌斌    
    http://developer.ccidnet.com/pub/disp/Article?columnID=295&articleID=27619&pageNO=1

    ibm 利用 Ant 和 JUnit 進行增量開發——使用單元測試來逐步改進代碼
    http://www-900.ibm.com/developerWorks/cn/java/j-ant/index.shtml

    關于作者:

    陳鵬,東軟西安公司。作為一名狂熱的程序員希望每一天都能成長進步,并希望與大家分享快樂和知識。
    請用以下方式和他聯系:email chen56@msn.com  

    posted on 2005-02-21 12:16 輕松 閱讀(1226) 評論(0)  編輯  收藏 所屬分類: JAVA轉貼

    主站蜘蛛池模板: 久久久久亚洲精品中文字幕| 国产美女无遮挡免费视频网站 | 全部在线播放免费毛片| 毛片a级三毛片免费播放| 亚洲国产成人九九综合| 美女视频黄是免费的网址| 亚洲中文字幕人成乱码| 国拍在线精品视频免费观看| 亚洲人成网站在线观看播放动漫| 久久WWW免费人成一看片| 亚洲制服丝袜一区二区三区| 欧美a级在线现免费观看| 亚洲人成人网站18禁| 国产91久久久久久久免费| 免费福利资源站在线视频| 亚洲精品成人久久久| 国产午夜成人免费看片无遮挡 | 免费福利电影在线观看| 亚洲理论精品午夜电影| 97视频热人人精品免费| 国产成人亚洲午夜电影| 亚洲人妻av伦理| 日本免费人成网ww555在线| 亚洲丰满熟女一区二区v| 精品无码国产污污污免费| eeuss草民免费| 亚洲爱情岛论坛永久| 国产三级在线观看免费| 国产成人亚洲综合在线| 亚洲日韩av无码| 97性无码区免费| 一本到卡二卡三卡免费高| 日本久久久久亚洲中字幕| 女人18特级一级毛片免费视频| 一级毛片成人免费看a| 久久亚洲私人国产精品| 毛片免费观看的视频| 成人免费777777被爆出| 亚洲宅男天堂a在线| 免费女人18毛片a级毛片视频| 国偷自产一区二区免费视频|