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>