Ant學習筆記

來源:互聯網
上載者:User

 一 . Ant是一個類似make的工具,用來編譯/運行/測試java程式。 構建、封裝和發布過程中幾乎每一件事都可以由Ant的任務來處理.
 Ant的用法:
 1.設定環境變數,在環境變數path的後面加上";C:/apache-ant-1.6.5/bin";
  沒有指定任何參數時,Ant會在目前的目錄下查詢build.xml檔案。如果找到了就用該檔案作為buildfile  。 如果你用 -find 選項。Ant就會在上級目錄中尋找buildfile,直至到達檔案系統的根。要想讓Ant使用 其他的buildfile,可以用參數 -buildfile file,這裡file指定了你想使用的buildfile。

 2.寫一個build.xml檔案,下面是一個簡單的例子:
  <?xml version="1.0" encoding="gb2312"?><!--指定編碼方式為gb2312這樣就可以加上一些中文注釋了-->
  <project name="antDemo" default="run">
   <!--屬性檔案 student.property 的內容:
   name=zhangsan
   age=18
   sex=m
   -->
   <property file="student.property"/>
   <target name="echo_1">
    <echo message="${name},${age},${sex}"/>
   </target>
   
   
   <!--定義一個全域變數 -->
   <property name="age" value="23"/>
   <target name="echo_2">
    <echo message="${age}"/>
   </target>
   
   <!--使用環境變數-->
   <property environment="envir"/>
   <target name="echo_3">
    <echo message="${envir.OS}"/>
   </target>
   
   <!--編譯java源檔案-->
   <target name="init">
   <!--使用mkdir建立dest目錄-->
    <mkdir dir="dest"/>
   </target>
   
   <!--使用depends指定此target要依賴的對象-->
   <target name="compile" depends="init">
   <!--
   srcdir指定java源檔案的路徑,destdir指定class檔案的路徑,includes指定要編譯
   的檔案,如果不指定此屬性,則編譯srcdir指定目錄下面的所有java源檔案,還可以使用
   excludes指定要排斥的檔案。
   -->
    <javac srcdir="src" destdir="dest" includes="test/Hello1.java, test/HelloWorld1.java"/>
   </target>   
   
   <target name="run" depends="compile">
   <!--classname屬性指定要啟動並執行class檔案-->
    <java classname="Hello1">
    <!--classpath子項目的pathelement子項目指定classname指定的檔案的路徑-->
     <classpath>
      <pathelement path="dest"/>
     </classpath>
    </java>
   </target>
  
  </project>
  在DOS環境下運行ant,這時可能會有兩種結果,一是正確執行得到你自己想要的結果了,而是出現錯誤提  示說找不到tools.jar包,這時就得設定java的環境變數了,本人都是用下面這方法設定的,
  (1).變數名:JAVA_HOME  值:"jdk的絕對路徑",
  (2).變數名:classpath  值:"%JAVA_HOME%/lib",
  (3).變數名:path 值:";%JAVA_HOME%/bin",
  這樣再重啟命令列視窗運行ant命令就不會有錯了.

二 . 一個對象池的例子,很有用的一個例子哦!在串連資料庫時的連線物件池就可以用這樣的方法,
  下面是兩個比較簡單的方法:
 /*此題設計一個ObjectPool類作為對象池,這個對象池負責建立和維護若干個Object對象,
  *其初始化有3個Object對象,此類提供一個getObject方法,該方法每次向外部提供一個未被
  *外部使用的Object對象,如果所維護的對象全部返回給了外面,則對象池負責建立新的Object
  *對象返回給外部,如果所返回給外部的對象達到10個時則拋出異常,此類還提供一個
  *releaseObject方法,用於將先前提供給外部的一個Object對象退還到對象池中,它維護的未
  *被外部使用的Object對象不能超過5個。
  */

 import java.util.*;
 public class ObjectPool
 {
  //  第一種方法

  Vector busyPool = new Vector();//正在使用的對象集合
  Vector freePool = new Vector();//沒有使用的對象集合
  
  public ObjectPool()
  {
   //預設freePool裡面有三個對象
   freePool.add(new Object());
   freePool.add(new Object());
   freePool.add(new Object());
  }
  
  public Object getObject() throws Exception
  {
   if(busyPool.size() >= 10)//大於10個對象時拋出異常
   {
    throw new Exception("異常!");
   }
   
   if(freePool.size() == 0)//如果freePool沒對象就建立一個新對象添加到busyPool並返回
   {
    Object objNew = new Object();
    busyPool.add(objNew);
    return objNew;
   }   
   
   int index = freePool.size() - 1;//當集合裡面還有對象時,
   Object obj = freePool.get(index);//擷取freePool裡面的最後一個對象obj
   busyPool.add(obj);//將obj添加到busyPool裡面,
   freePool.remove(obj);//將obj從freePool對象裡面刪除。
   return obj;  
  }
  
  public void releaseObject(Object obj) throws Exception
  {
   if(busyPool.contains(obj))//如果busyPool集合裡面存在這個對象則刪除它
   {
    busyPool.remove(obj);
   }
   else//否則拋出異常
   {
    throw new Exception("異常");
   }
   
   if(freePool.size() < 5)//此對象池最多能容納5個空閑對象。
   {
    freePool.add(obj);//如果不超過5個則將添加至freePool中
   }  
  } 
 
  /* 第二種方法,和第一種的相比在於releaseObject方法中不能判斷外部退還的對象是不是此對象池給出去的對象
  
  Vector v = new Vector();//儲存從外面傳回來的對象,初始化有三個
  int count = 3;//定義一個記錄總共對象的計數器
  
  public ObjectPool()
  {
   for(int i = 0; i < 3; i++)
   {
    Object obj= new Object();
    v.add(obj);
   }
  }
  
  public Object getObject() throws Exception
  {
   Object o = null;
   if(v.size() == 0 && count < 10)//當集合裡面沒有空閑對象且總共拿出去的對象不超過
   {        //10個時,則建立一個對象,計數器自 +1;
    o = new Object();
    count++;
   }
   else if(count == 10)    //當計數器記錄的對象數達到10個時拋出異常。
   {
    throw new Exception("異常");
   }
   else if(v.size() > 0 && count < 10)//當集合裡面有空閑對象且計數器記錄的對
   {         //象數少於10個時,從集合裡面取出一個並刪除它
    o = v.get(v.size() - 1);  //最後返回
    v.remove(v.size() - 1);
    count++;
   }
   return o;
  }
  
  public void ReleaseObject(Object o)
  {
   if(v.size() < 5) //當空閑對象小於5個時就將外面傳進來的對象放到集合中,
   {
    v.add(o); 
   }
   count--;   //每傳回來一個就把計數器自 -1.
  }
  */
 }

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.