隨筆 - 5  文章 - 4  trackbacks - 0

          留言簿

          文章分類(2)

          文章檔案(7)

          搜索

          •  

          最新評論

          使用 Apache Ant

          以前用eclipse的時候,老能在它的 窗口-》首選項 里發現 ant 這個東西(螞蟻??),不知為何物。然后google里搜索了下,只知道是構建……
          現在看了這章,才感慨,原來是這樣的所 :)
          這個ant,還真和螞蟻一樣,用來筑巢的!用在java上來說就是搭建這樣如同螞蟻穴一樣的層次結構!然后在說白點就是:批處理!如果你沒事,完全也可以代替ant,做個這樣的類也可以的:能創建,刪除文件;能用編程的方式實現各種打包如jar、war;能啟動服務器……

          <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 documentation
               ===================================================================
          -->
              <target name="javadocs" depends="jars" description="--> creates the API documentation">
                  <!--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>

          分析: 從這個例子可以知道 這個ant的流程是:(更據 project default 和 depends) init -》buil  -》jars -》javadocs -》dist 。每一對  <target></target> 作為一個任務塊。上例子<target></target>里沒有介紹到的元素有:
          <echo message="this os name  is the ${os.name}" />
          <fileset dir="${tomcat.dir}/common/lib">
              <include name="*.jar" /> //指明類型
              <include name="**/image/*" /> //無論嵌套的多深,都能找出來
              <exclude name="commons*.jar />";  //排除類是這樣符合通配符的文件
          </fileset>
          <property file="global.properties" />
          global.properties 是一個文件,里面配置了一些參數,形如:

          url=http://www.kaoyanbar.com
          username=lsr
          password=sa
          使用ant啟動/停止web應用:
          <target>
              <start url= username= password= path= />
              <stop url= username= password= path= />
          </target>

          posted on 2006-12-08 11:50 googlor 閱讀(483) 評論(0)  編輯  收藏

          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          主站蜘蛛池模板: 确山县| 大方县| 秦皇岛市| 乌恰县| 潍坊市| 进贤县| 江达县| 永宁县| 西昌市| 宿松县| 宝应县| 正蓝旗| 眉山市| 聊城市| 台东县| 湖北省| 汪清县| 麦盖提县| 婺源县| 喀什市| 扬中市| 德江县| 承德市| 卢氏县| 水富县| 永宁县| 乌拉特前旗| 稷山县| 峡江县| 湘乡市| 扎囊县| 申扎县| 托克逊县| 天镇县| 北辰区| 镇安县| 佛坪县| 昭平县| 金乡县| 全南县| 鄂托克旗|