1. 程式人生 > >ant使用總結(二):相關命令說明

ant使用總結(二):相關命令說明

在ant安裝目錄的manual目錄是ant的說明文件,開啟index.xml,點選Using Apache ant有使用說明。

相關命令說明

指定配置檔案

執行ant命令,預設使用當前目錄下的build.xml,可以通過-f指定配置檔案。 示例:ant -f 配置檔案路徑

project

屬性: name:工程名稱 default:預設執行的target

target

<target>是一個容器,指令集合,一個事務。 屬性: depends:依賴項,執行該target之前需要先執行的target。 name:名稱 例子: <target name="A" > 
<target name="B" depends="A"> 
<target name="C" depends="A,B"> 在命令列中執行指定target:ant targetName

property

ant中的屬性,相當於定義一個變數,通過${屬性名}引用。 屬性: name:變數名 value:值 file:屬性配置檔案路徑,配置檔案中要以key=value的格式配置屬性。例子:<property file="local.properties" /> environment:給環境變數起一個別名​
例子: <property name="a" value="aaa" /> <target name="print">   <echo>${a}</echo> </target>

import

包含一個檔案,project的name屬性值不能衝突。optional表示該檔案是否可選。 <import file="test2.xml" optional="true" />

condition

condition標籤可以通過條件判斷去定義變數的值。
	<property name="a" value="aaa" />
	
	<!--
	<property name="b" value="bbb" />
	-->
	
	<!-- 如果設定了屬性b則值為${b},否則值為${a}-->
    <condition property="val" value="${b}" else="${a}">
        <!-- 判斷是否設定了指定屬性 -->
        <isset property="b" />        
    </condition>

propertyfile

把屬性儲存到一個檔案裡 屬性: file:檔案路徑
    <propertyfile file="auto.prop">
    	<!-- 儲存auto.umeng.channel=${a}到檔案 -->
        <entry key="auto.umeng.channel" value="${a}" />
    </propertyfile>

copy

1.拷貝單個檔案到指定路徑 <copy file="a.txt" tofile="b.txt" /> 2.拷貝單個檔案到指定目錄 <copy file="a.txt " todir="../tmpdir " / > 3.拷貝一個目錄到另外一個目錄下 <copy todir="../destDir">   <fileset dir="srcDir" /> </copy> 4.拷貝一批檔案到指定目錄下 <copy todir="../destDir">   <fileset dir="srcDir">     <include name="**/*.java">     <exclude name="**/Test.java"> 
  </fileset> </copy> <copy todir="../destDir">   <fileset dir="srcDir" excludes="**/*.java"/> </copy>

delete

1.刪除一個檔案 <delete file="a.txt" /> 2.刪除指定目錄及其子目錄 <delete dir="dir" /> 3.刪除指定的一組檔案 <delete>   <fileset dir="." includes="**/*.bak" /> </delete>

move

1.移動或重新命名一個檔案 <move file="a.txt" tofile="b.txt" /> 2.移動一個檔案到指定目錄下 <move file="a.txt" todir="destDir" /> 3.移動一個目錄到另一個目錄下 <move todir="destDir">   <fileset dir="srcDir" /> <move/> 4.將一組檔案移動到另一個目錄下 <move todir="destDir">   <fileset dir"srcDir">      <include name="**/*.jar" />      <exclude name="**/ant.jar" /> 
  </fileset> </move>

javac

<javac srcdir="原始檔目錄" destdir="編譯輸出目錄" classpath="依賴的jar檔案或類目錄" debug="on表示輸入日誌資訊,off表示不輸出" includes="包含檔案" excludes="忽略檔案" />

java

<java classname="執行的類的全路徑名">
<classpath>
<pathelement location="xxx.jar" />
<pathelement path="classpath" />
</classpath>
</java>
pathelement可以通過location屬性包含一個jar或者通過path屬性包含一個類路徑。classpath用於設定要使用的環境變數。

jar

<jar destfile="xxx.jar" basedir="./classes" includes="./lib/**(包含lib目錄下所有檔案)" excludes="**/Test.class(忽略所有Test.class)" manifest="自定義mf檔案命名"/>

if

if通過條件判斷決定是否進行一些操作。
	<!-- 如果條件成立,則呼叫print -->		
	<if>
		<!-- 判斷指定屬性值是否為true -->
        <!--
        <istrue value="${a}" />
        -->
        
		<!-- 判斷是否設定了指定屬性 -->
		<!--
		<isset property="prop"/>
		-->
		
		<!-- 判斷兩個值是否相等 -->
    	<equals arg1="${channel}" arg2="2" />
    <then>
        <antcall target="print" />
    </then>
	</if>
antcall標籤用於呼叫一個target。

script

script標籤用於插入指令碼程式碼。 示例:獲取當前時間並設定為屬性time的值。
<script language="javascript">
            <![CDATA[
                project.setProperty("time",Math.floor((new Date()).getTime()/1000));
            ]]>
    </script>

時間戳

格式化當前時間並設定屬性time。
    <tstamp>
      <format property="time"
                  pattern="yy.M.d.HHmm" />
    </tstamp>

新增自定義jar到ant的classpath

	<!-- 新增ant-contrib-1.0b3.jar到classpath -->
	<taskdef resource="net/sf/antcontrib/antcontrib.properties">
        <classpath>
            <pathelement location="${env.ANT_ROOT}\lib\ant-contrib-1.0b3.jar" />
        </classpath>
    </taskdef>

我這裡是把ant-contrib-1.0b3.jar放到了ant安裝目錄的lib目錄下。 示例程式碼:
channel = ${channel}
執行效果:

替換指定字串

轉義符列表:
&lt; < 小於號
&gt; > 大於號
&amp; &
&apos; ' 單引號
&quot; " 雙引號

replaceregexp標籤的是支援正則表示式的。
相關文章: