一. ant简单介绍
Ant是apache的一个核心项目, 它的作用是项目自己主动化构建, 由于它内置了Javac、Java、创建文件夹、拷贝文件等功能,
直接执行build.xml文件就能够编译我们的项目。
二. ant配置
1. 新建环境变量ANT_HOME: ant的解压文件夹
2. 在path中配置:%ANT_HOME%/bin;
3. 在命令行中输入ant, 假设出现 Buildfile:build.xml does not exist! Build failed 说明配置成功
三. ant入门程序
build.xml
<?xml version="1.0" encoding="GBK"?> <project default="targetname"> <target name="name"></target> </project>project是生成文件的根元素, 表示一个工程
target是project的子元素, 表示一个任务, 一个project中能够定义多个target元素, 表示多个任务
default属性表示默认运行的target, 假设ant命令没有指定target, 则运行default的target
ant targetName则会运行此target, 而忽略default设置的target
四. ant编译Java项目流程
1. 创建目录
build -> 全部文件信息都保存在这个目录中
-- src -> 全部源代码信息保存在这个目录中
-- classes -> 编译好的全部文件保存在这个目录中
-- dist -> 编译好的jar文件保存在这个目录中
2. 将src中文件复制到build/src
3. 编译源代码
4. 将源代码打包成jar
5. 直接执行程序
<?xml version="1.0" encoding="UTF-8"?> <project default="execute"> <!-- 使用属性定义对应路径的时候, 使用location(会依据操作系统转换路径), 假设不是路径就使用value --> <property name="build.dir" location="build" /> <property name="build.classes" location="${build.dir}/classes" /> <property name="build.src" location="${build.dir}/src" /> <property name="build.lib.dir" location="${build.dir}/dist" /> <!-- 假设属性太多, 能够将属性放在一个外部文件里定义, 在本文件里引用 特别注意: 假设是路径就不建议在外部文件里定义, 由于此时就不会设置location的值 --> <property file="build.properties" /> <!-- 把环境变量中的參数存放在env这个变量中 --> <property environment="env" /> <target name="test"> <echo>${ant.home}</echo> <echo>${ant.version}</echo> <echo>${env.CLASSPATH}}</echo> </target> <!-- fileset能够设定一组文件集来进行操作, dir指明文件集进行选择的路径 通过id能够指定这个文件的名称, 以下使用的时候能够直接引入 include和exclude能够设定包括和排除文件的范围 --> <fileset id="src.path" dir="src"> <include name="**/*.*" /> <exclude name="**/Test*.java"/> </fileset> <target name="init"> <delete dir="${build.dir}" /> <mkdir dir="${build.dir}" /> <mkdir dir="${build.classes}" /> <mkdir dir="${build.src}" /> <mkdir dir="${build.lib.dir}" /> </target> <target name="copySrc" depends="init"> <copy todir="${build.src}"> <fileset refid="src.path"></fileset> </copy> </target> <target name="compile" depends="init"> <javac destdir="${build.classes}" srcdir="src"></javac> </target> <target name="jar" depends="compile"> <jar destfile="${build.lib.dir}/${jar.name}" basedir="${build.classes}"> <manifest> <attribute name="Main-Class" value="${execute.class}"/> <attribute name="Build-By" value="zhangdongping"/> </manifest> </jar> </target> <target name="execute" depends="jar, copySrc"> <echo>基于类路径下的classname来完毕运行</echo> <java classname="${execute.class}" classpath="${build.classes}"> <arg value="zhangsan" /> </java> <echo>基于jar文件运行</echo> <java jar="${build.lib.dir}/${jar.name}" fork="true"> <arg value="liming" /> </java> </target> </project>
build.properties
execute.class = com.zdp.test.HelloWorld jar.name = hello.jarHelloWorld.java
package com.zdp.test; public class HelloWorld { public static void main(String[] args) { System.out.println("hello " + args[0]); } }