2-build.xml 配置
阿新 • • 發佈:2020-12-22
使用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>