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>