ant基礎概念介紹

ant 學習資料,百度雲盤

 

ant 官網:http://ant.apache.org/

 

ant安裝:下載解壓即可,antbin目錄可設置環境變量,類似javaJDK安裝。

antproject:  ant的根標籤

anttarget target表示的是每一項具體的任務,可以有多個

antdepends:    當不同的任務之間有相應的關聯的時候,可以通過depends屬***來設定

anteclipse的配置:如果聯網,windows-->preferencesant默認會連官網地址。如果斷網可以自己配置,documentation URL:改爲自己下載的文件manual;運行環境runtime中的ant home(默認的是jdkant 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>

     <!--forktrue使用的是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>


 


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章