Ant構件工具|配置信息|批處理命令|克隆

 
 
2006-8-21知識總結
l          Ant構件工具
1、配置path:
path等於apache-ant-1.6.5bin文件所在目錄下。如 C:/apache-ant-1.6.5/bin
2、配置JAVA_HOME
 因爲ant.bat批處理程序中已經有JAVA_HOME的配置,但是路徑不一定對,所以配置JAVA_HOME的配置要看具體情況,可以不配置,未免出錯要求配置。
JAVA_HOME等於在java/jdk/lib 目錄下,主要是在ant運行時去調用java中(如tools.jar包中類)的類去實現。如可設置爲:C:/Program Files/Java/jdk1.5.0_01或者C:/Program Files/Java/jdk1.5.0_01/lib (可能是因爲系統將自動去尋找jdk1.5.0_01下的lib文件下的java類包)
3.批處理中的部分命令:如@echo off他下面的命令不顯示, echo命令打印並執行命令.
4.配置build.xml
其中常用的格式爲:
<?xml version="1.0" encoding="gb2312" ?>     <!--資源文件-->
<”default”屬性值指明該工程運行的項目,該屬性可以不指定>
<project name="Lesson1" default="run" >         
<property file="build.properties"/>        <!--建目錄-->
                <target name="init">
                               <mkdir dir="class" />
                </target>
<!-- 編譯文件,srcdir設置源文件目錄,destdir設置生成.class目標文件目錄-->
<target name="compile" depends="init" >
                                <javac srcdir="${dir.src}" destdir="${dir.class}" /> 
                </target>
                      <!--運行文件,depends設置本操作依靠於compile操作,即運行到本操作時將根據depends屬性跳轉到先去執行comlile操作,等complie完成後才執行本操作,把complie作爲本操作運行的前提,classpath屬性設置運行文件所在目錄>
                <target name="run" depends="compile" >
                                 <java classname="Hello" classpath="${dir.class}" />
                </target>
                <!--刪除文件-->
                <target name="delete" depends="run">
                            <delete includeEmptyDirs="true">
                                        <fileset dir="${dir.class}" includes="*/**"/>
                      </delete>
                </target>
</project>
其中的每個目標操作其實都對應着一個java類,所以ant的可擴展性很強,可以自己編寫一個類讓ant去調用從而實現自己想讓實現的功能。其中的類明那些變量應該用build.properties文件配置,這樣可擴展性強。其他屬性請參考ant幫助。
5、補充:Properties的實現與作用:
   a. 實現:可在當前目錄下創建一個build.properties的文件(擴展名爲 .properties),在此文件中添加值(如:dir.class = class.然後在當前build.xml文件中創建一<property></property>標籤對,在其中設置file屬性,值設置爲目錄下的build.properties(如不同一目錄下將在前添加相對路徑)。
   b. 作用:當在大量處理相同路徑下的文件時,可通過改動build.properties中的值從而改變所有在 build.xml中的所有相關的項。
例如:
built.porperties中對應值爲:
       dir.src = src
       dir.class = class    (其中,src代表源文件夾、class代表目標文件夾)
built.xml文件對應代碼如下:
<project name = "testAnt" default = "run">
            <property file = "build.properties" />    <!-- propertiesbuilt.xml中的引用 -->
            <target name = "make">
                      <mkdir dir = "class"></mkdir>
            </target>
            <target name = "complie">
           <固定格式:${},在{}中添加built.porperties中的值>
                      <javac srcdir = "${dir.src}" destdir = "${dir.class}" />
            </target>
            <target name = "run" depends = "complie">
                      <java classname = "Hello" classpath = "class" />
            </target>
</project>
 
6includeexclude 的運用:
     例如:
    <classpath>
      <pathelement path="${classpath}"/>
      <fileset dir="lib">
        <include name="**/*.jar"/>
      </fileset>
      <pathelement location="classes"/>
      <dirset dir="${build.dir}">
        <include name="apps/**/classes"/>
        <exclude name="apps/**/*Test*"/>
      </dirset>
      <filelist refid="third-party_jars"/>
     </classpath>
說明:
a.        name="**/*.jar" 表示:
當前目錄下以及所有“子子孫孫”目錄下以“.jar”爲擴展名的所有文件。其中“** 當前目錄下以及所有“子子孫孫”目錄下的文件,“*.jar”表示所有以“.jar”爲擴展名的文件,
b.        name="apps/**/*Test*”表示:
apps所有“子子孫孫”目錄下的文件名中包含“Test”的的所有文件。其中“**”表示apps的所有“子子孫孫”目錄下的文件。
 
l          專家模式:誰最瞭解,持有數據,就讓誰處理該事件,這就叫專家模式。
例如:
a. 電視和關電視的人?
——由於是電視清楚關電視的操作,瞭解關電視的過程,因此電視去關而不是人去關,人只是發出了一個關電視的動作,具體怎麼進行關電視的操作而是有電視去實施的。
b. 票據和售貨員?
——由於票據持有所有有關數據,因此在統計總額時是又票據去進行數據處理,而不是人,人只是可能發出統計的命令。
c. 門與關門的人?
——由於門自己最清楚自己的構造,怎麼樣才能關上門,因此是又門去處理關門這一事件,而不是人,人只可能發出關門的命令,而具體怎麼關是有門去實施。
 
l          類複製的應用(克隆):
         用於保證程序的穩定性,例如如果在多線程中2個線程同時超做一個對象的時候爲了保證結果的穩定,所以可以考慮複製對象,當然也可以用syschronized保證線程同步。
    例如:
        class Student
        {
                   private String name;
                   private int age;
                   private Thread t;
                   protect Object clone() throws CloneNotSupportedException
                   {
                            Student another = new Student();
                            another.name = this.name;
                            another.age = age;
}
         }
 
學習感言:
    今天是忙碌的一天,思考沒停止過,手沒停止過,現在已經快凌晨一點了,一會也該洗澡睡覺了。
    今天是充實的一天,學習了不少新知識,讓我經歷從不知道Ant構架工具到了解和會使用的過程,最後能自己發現問題,解決問題和總結問題。
    這次學習班中很厲害的同學很多,他們都成爲了我的好朋友,他們都很熱情和主動的幫助我解決疑難,相信在張老師的教學中和這些好朋友的幫助下,我很有信心學習好。
 
發佈了16 篇原創文章 · 獲贊 1 · 訪問量 3萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章