都说Linux环境下的程序员如果不会使用GNU make来构建和管理自己的工程,应该不能算是一个合格的专业程序员,至少不能称得上是Unix程序员。
而在一说到Ant的时候,很多人就把这两个的功能对比来说,所以是否可以这样说呢?如果不能用Ant来构建和管理自己的工程,应该不能算是一个合格的Java工程师呢?关于Ant和make的关系,这里只说一句,与make相比,Ant完全由Java实现,具有跨平台的好处。
说了这么多,那么Ant到底是用来干什么呢?你如果从网上查,都会这样告诉你,这是一个构建工具,但又不仅限于构建。例如可以和Xdoclet配合生成Hibernate配置文件和Hibernate映射文件。
要使用,就得下载、安装,那么就先说一下下载安装。
自己度娘或谷哥找一下Ant,然后解压。接下来就埼一些配置:
设定ANT_HOME环境变量,指向你解压的Ant目录。然后在Path中添加%ANT_HOME%in。这里小科普一下,你在cmd中运行某个命令时,报不是内部命令这种错的时候,就看一下这个命令所在的路径是不是在Path中。
完事之后,打开cmd,打一下ant -version,看会不会出现ant的版本信息,如果出现了呢就说明你的ant已经安装好了。
下面就开始进入Ant的天堂了,首先来了解一下Ant的基本使用
首先,建立一建立一个空的文件夹,我命名为testAnt,在这个文件夹中建立一src/jianxin/ant的目录,在ant中建立一个HelloWorld.java文件:
package jianxin.ant; public class HelloWorld{ public static void main(String[] args){ System.out.println("Hello World"); } }
然后,在在testAnt中建立build.xml文件
<project name="HelloWorld" basedir="." default="main"> <property name="src.dir" value="src"/> <property name="build.dir" value="build"/> <property name="classes.dir" value="${build.dir}/classes"/> <property name="jar.dir" value="${build.dir}/jar"/> <property name="main-class" value="jianxin.ant.HelloWorld"/> <target name="clean"> <delete dir="${build.dir}"/> </target> <target name="compile"> <mkdir dir="${classes.dir}"/> <javac srcdir="${src.dir}" destdir="${classes.dir}"/> </target> <target name="jar" depends="compile"> <mkdir dir="${jar.dir}"/> <jar destfile="${jar.dir}/${ant.project.name}.jar" basedir="${classes.dir}"> <manifest> <attribute name="Main-Class" value="${main-class}"/> </manifest> </jar> </target> <target name="run" depends="jar"> <java jar="${jar.dir}/${ant.project.name}.jar" fork="true"/> </target> <target name="clean-build" depends="clean,jar"/> <target name="main" depends="clean,run"/> </project>
打开cmd窗口,进入testAnt的根目录,运行ant:
至此,一个工程中需要的清理、编译、打包、运行就都通过Ant帮助我们完成了。
此文只是一个Ant的Hello World,从上面的build的编写中不难发现一些熟悉的字样,deltete、mkdir、javac、jar、java…,这些命令在cmd的命令行中都是存在的,所以无论Ant如何变化,只要用你能手动写cmd来完成对项目的管理,那么都可以通过查询Ant的文档,然后编写Ant来自动完成,现在来看,Ant被主要被用来构建,但又不局限于构建,就清楚明白了。
关于project、target,property三个标签,不多说,自己做一遍上面我敲的例子后,如果还是不明白,那么留言讨论。