ant 學習資料,百度雲盤
ant 官網:http://ant.apache.org/
ant安裝:下載解壓即可,ant的bin目錄可設置環境變量,類似javaJDK安裝。
ant的project: ant的根標籤
ant的target: target表示的是每一項具體的任務,可以有多個
ant的depends: 當不同的任務之間有相應的關聯的時候,可以通過depends屬***來設定
ant的eclipse的配置:如果聯網,windows-->preferences的ant默認會連官網地址。如果斷網可以自己配置,documentation URL:改爲自己下載的文件manual;運行環境runtime中的ant home(默認的是jdk的ant home)該爲下載的ant home(bin的上一層目錄,即ant文件名目錄),配置完成。
創建刪除文件夾:
<targetname="init">
<!--ant默認會檢測是否已經有要編譯的文件,所以要先刪除文件-->
<deletedir="build"></delete>
<mkdirdir="build"/>
<mkdirdir="build/classes"/>
<mkdirdir="build/dist"/>
<mkdirdir="build/src"/>
<mkdirdir="創建文件的目錄"/>
<deletedir="要刪除的文件目錄"></delete>
</target>
拷貝文件夾:
拷貝要用到文件集,創建文件集
<filesetdir="文件目錄"includes="該目錄下的哪些文件"></fileset>
<!--拷貝src目錄下的所有文件-->
<filesetdir="src"includes="**/*.*"></fileset>
<targetname="copySrc"depends="init">
<!—todir要拷貝到的目標路徑下 -->
<copytodir="build/src">
<!—上邊已經創建的文件集-->
<filesetdir="src">
<!—**/*.*:所有目錄的所有文件-->
<includename="**/*.*"/>
<includename="**/*.java"/>
<!--排除文件帶test字符的所有文件-->
<excludename="**/*test*.*"/>
</fileset>
</copy>
</target>
或者如下形式
<filesetid="src.path"dir="src"includes="**/*.*"></fileset>
<targetname="copySrc"depends="init">
<copytodir="build/src">
<filesetrefid="src.path"></fileset>
</copy>
</target>
編譯源代碼:
<targetname="compile"depends="依賴">
<javacdestdir="編譯後的文件存放"srcdir="編譯源文件"includeantruntime="on"></javac>
</target>
<targetname="compile"depends="init">
<javacdestdir="build/classes"srcdir="src"includeantruntime="on"></javac>
</target>
打包:
<targetname="jar"depends="compile">
<jardestfile="build/dist/hello.jar"basedir="build/classes"></jar>
</target>
打包成直接可運行的jar包如下:
<targetname="jar" depends="compile">
<jardestfile="build/dist/hello.jar" basedir="build/classes">
<!—如果jar文件可以直接運行需要在META-INF/MANIFEST.MF文件中加入這個信息-->
<manifest>
<attributename="Main-Class" value="com.ant.test.HelloWorld" />
<attributename="Build-Author" value="Cheney" />
</manifest>
</jar>
</target>
運行:
<targetname="execute"depends="jar,copySrc">
<echo>基於類路徑的classname來執行的</echo>
<javaclassname="com.ant.test.HelloWorld"classpath="build/classes">
<argvalue="111111"/>
<argvalue="222222"/>
<argvalue="333333"/>
</java>
<echo>基於jar來執行的</echo>
<!--fork爲true使用的是JDK的環境,默認使用的是ant的編譯環境 -->
<javajar="build/dist/hello.jar"fork="true">
<argvalue="111111"/>
<argvalue="222222"/>
<argvalue="333333"/>
</java>
</target>
ant屬***:
<propertyname="build.dir"location="bin01"></property>
<!--使用location 不適用value的原因:路徑問題-->
<propertyname="build.class.dir"location="${build.dir}/class"></property>
<propertyname="build.lib.dir"location="${build.dir}/dist"></property>
<propertyname="build.src.dir"location="${build.dir}/src"></property>
<!--路徑文件不建議放在外部文件中,因爲這樣就不能用location的值了,而是value,系統就不能自動識別路徑標示符了-->
<!—value形式的屬***示例:
<propertyname="jar.name" value="hello.jar"></property>
<propertyname="execute.class"value="com.ant.test.HelloWorld"></property>
-->
<!—如果屬***太多可以引用外部文件鍵值對的形式,如果是路徑不建議放到外部文件中,此時不能設置location -->
<propertyfile="build.properties"></property>
<!—加載環境變量,把環境變量的值導入到env變量中,比如可以獲取tomcat的屬***等-->
<propertyenvironment="env"></property>
<echo>${env.JAVA_HOME}</echo>
<!—引用已存在的變量-->
<targetname="test">
<echo>${env.JAVA_HOME}</echo>
<echo>${ant.file}</echo>
<echo>${ant.home}</echo>
<echo>${ant.java.version}</echo>
<echo>${ant.project.name}</echo>
<echo>${ant.version}</echo>
<echo>${basedir}</echo>
</target>
以上基礎知識總結buile.xml示例:
<?xml version="1.0" encoding="UTF-8"?> <project default="execute"> <property name="build.dir" location="bin01"></property> <!--使用location 不適用value的原因 : 路徑問題--> <property name="build.class.dir" location="${build.dir}/class"></property> <property name="build.lib.dir" location="${build.dir}/dist"></property> <property name="build.src.dir" location="${build.dir}/src"></property> <!--路徑文件不建議放在外部文件中,因爲這樣就不能用location的值了,而是value,系統就不能自動識別路徑標示符了--> <!-- <property name="jar.name" value="hello.jar"></property> <property name="execute.class" value="com.ant.test.HelloWorld"></property> --> <property file="build.properties"></property> <!--把環境變量的值導入到env變量中--> <property environment="env"></property> <target name="test"> <echo>${env.JAVA_HOME}</echo> <echo>${ant.file}</echo> <echo>${ant.home}</echo> <echo>${ant.java.version}</echo> <echo>${ant.project.name}</echo> <echo>${ant.version}</echo> <echo>${basedir}</echo> </target> <target name="init"> <delete dir="${build.dir}"></delete> <mkdir dir="${build.dir}"/> <mkdir dir="${build.class.dir}"/> <mkdir dir="${build.lib.dir}"/> <mkdir dir="${build.src.dir}"/> </target> <target name="copySrc" depends="init"> <copy todir="${build.src.dir}"> <fileset dir="src"> <include name="**/*.*"/> </fileset> </copy> </target> <target name="compile" depends="init"> <javac destdir="${build.class.dir}" srcdir="src" includeantruntime="on"></javac> </target> <target name="jar" depends="compile"> <jar destfile="${build.lib.dir}/${jar.name}" basedir="${build.class.dir}"> <manifest> <attribute name="Main-Class" value="${execute.class}" /> <attribute name="Build-Author" value="Cheney" /> </manifest> </jar> </target> <target name="execute" depends="jar,copySrc"> <echo>基於類路徑的classname來執行的</echo> <java classname="${execute.class}" classpath="${build.class.dir}"> <arg value="張三"/> <arg value="222222"/> <arg value="333333"/> </java> <echo>基於jar來執行的</echo> <!--fork爲true使用的是JDK的環境,默認使用的是ant的編譯環境 --> <java jar="${build.lib.dir}/${jar.name}" fork="true"> <arg value="111111"/> <arg value="222222"/> <arg value="333333"/> </java> </target> </project>