1. 程式人生 > 其它 >2-build.xml 配置

2-build.xml 配置

技術標籤:Jmeter教程測試工程師

使用ant <build.xml>編譯,打包java專案,build.xml如下:

<project name="seleniumWebDriver" default="build" basedir=".">
	<description>
        simple example build file
    </description>
	<!-- set global properties for this build -->
	<property name="src" location="src" />
	<property name="build" location="target" />
	<property name="selenium" location="selenium" />
 
	<target name="init">
		<!-- Create the time stamp -->
		<tstamp />
		<!-- Create the build directory structure used by compile -->
		<mkdir dir="${build}" />
		<mkdir dir="${build}/classes" />
 
	</target>
 
	<target name="compile" depends="init" description="compile the source ">
		<!-- Compile the java code from ${src} into ${build} -->
		<javac srcdir="${src}" destdir="${build}/classes" includeantruntime="false">
			<classpath>
				<fileset dir="${hadoop.home}/share/hadoop">
					<include name="**/*.jar" />
				</fileset>
			</classpath>
		</javac>
	</target>
 
	<target name="build" depends="compile" description="generate the distribution">
		<!-- Build the jar file -->
		<jar jarfile="${build}/lib/WordCount.jar" basedir="${build}/classes" />
	</target>
 
	<target name="clean" description="clean up">
		<!-- Delete the ${build} and ${dist} directory trees -->
		<delete dir="${build}" />
	</target>
</project>

build.xml ant基本常用元素講解


Project元素
Project元素是Ant檔案的根元素,Ant構建檔案中至少應該包含一個project元素,否則會發生錯誤,在每個project元素下面可以包含多個target元素。project的屬性包括:
name : 專案名稱
default:當呼叫時沒有指定target時,此project的預設targe  當ant命令沒有指定要執行的target ,則將執行預設的target
basedir:用於指定基路徑的位置,改屬性沒有指定時,使用Ant的構建檔案的父目錄作為基路徑

target元素
name: target的名稱,這個屬性在一個project中是唯一的。我們可以通過指定 target 元素的名稱來指定某個 target 。
depends:用來描述target間的依賴關係,若與多個 target 存在依賴關係時,需要以“,”間隔。 Ant 會依照 depends 屬性中 target 出現的順序依次執行每個 target 。被依賴的 target 會先執行。
if:用於驗證指定的屬性是否存在,若不存在,所在 target 將不會被執行。
unless:該屬性的功能與 if 屬性的功能正好相反,它也用於驗證指定的屬性是否存在,若不存在,所在 target 將會被執行。
description:該屬性是關於 target 功能的簡短描述和說明。

property元素
property元素可看作變數或者引數的定義
例如<property name ="name" value ="philander"/>
若要在外部引入某檔案,例如 build.properties 檔案,可以通過如下內容將其引入<property file="build.properties"/>。

Ant常用命令:
tstamp 時間格式化
<tstamp>
		<format property="time" pattern="yyyyMMddHHmmss" />
</tstamp>

執行那些任務
<target name="run">
		<antcall target="test"/>
		<antcall target="report"/>
</target>
copy 拷貝檔案
複製單個檔案
<copy file="original.txt" tofile="copied.txt"/>
對檔案目錄進行復制:
<copy todir="${jmeter.result.html.dir2}">
        <fileset dir="${jmeter.home}/extras">
            <include name="collapse.png" />
            <include name="expand.png" />
            <exclude name="**/*.class"/>
        </fileset>
</copy>
將檔案複製到另外的目錄:
 <copy file="source.txt" todir="../target/"/>

delete 刪除檔案
 對檔案或目錄進行刪除
刪除某個檔案:
<delete file="/home/photos/philander.jpg"/>

刪除某個目錄:
<delete dir="/home/photos"/>

 刪除所有的備份目錄或空目錄:
<delete includeEmptyDirs="true">
<fileset dir="." includes="**/*.bak"/>
</delete>

 mkdir 建立目錄
 <mkdir dir="/home/test"/>

move 移動檔案或者目錄
<move file="sourcefile" tofile="destfile"/>

移動單個檔案到另一個目錄:
<move file="sourcefile" todir="movedir"/>

移動某個目錄到另一個目錄:
<move todir="newdir"> <fileset dir="olddir"/></move>

 echo 命令
 該任務的作用是根據日誌或監控器的級別輸出資訊
 它包括 message 、 file 、 append 和 level 四個屬性,舉例如下
<echo message="Hello,ANT" file="/home/logs/ant.log" append="true">

javac 編譯
 <javac srcdir="${basedir}/src" destdir="${basedir}/WebRoot/WEB-INF/classes" target='1.7' source="1.7" encoding="utf-8" debug="true" 
     includeantruntime="false">
			 <!-- <compilerarg line="-encoding UTF-8 "/> -->
            <classpath>
                <fileset dir="${basedir}/WebRoot/WEB-INF/lib">
                            <include name="**/*.jar"/>
                 </fileset>
            </classpath>
  </javac>

java命令執行Java程式
<java classname ="HelloWorld">
    <classpath>
         <pathelement path="${basedir}/build/classes"/>
    </classpath>
 </java>
    
使用war命令打包JavaEE專案
<target name ="war" depends ="compile">
    <war destfile ="${build}/WebTest.war" webxml ="${basedir}/WebContent/WEB-INF/web.xml">
        <!-- 拷貝WebRoot 下除了WEB-INF 和META-INF 的兩個資料夾-->
        <fileset dir ="${basedir}/WebContent" includes ="**/*.jsp"/>
        <!-- 拷貝lib 目錄下的jar 包-->
        <lib dir ="${lib}"/>
        <!-- 拷貝build/classes 下的class 檔案-->
        <classes dir ="${classes}"/>
    </war>
</target>