听说过Ant的大名,一直没有机会学习和使用。用了一个晚上,网上搜集了一些资料,勉强编译了几个Demo,算是初识Ant吧。
附件中为zhanghongliang_cyj博客提供的资料,写的很好,很详细。大家可以参阅一下。
他的博客地址:http://zhanghongliang-cyj.iteye.com/blog/677292
一些心得:
对一个Ant的门外汉来说,关心的问题其实很简单,就几个而已。
1.Ant是什么,怎么安装
2.Ant的核心是一个xml,xml的格式怎样。
3.Ant执行的流程是什么,和javac的区别和共同点是什么?
4.使用Ant如何编译一个不引用jar包的工程,引用其他jar包的工程又怎样编译?
问题1、2网上很多答案,也可以参考附件。
关于问题3:
Ant和Maven等其他编译工具其实都一样,主要是一个Task的概念,每一个Task的目的就是要达到一个Target。
运行代码,无非就是初始化环境(init)、编译(compile,build)、发布(archive)、打包(archive)、运行(run)。
要完成某一个步骤,必须完成前面的步骤。这一点,无论javac还是ant等工具,过程都是一样的。
只不过通过Ant,你可以在build.xml中按照顺序定义这几个操作,并且通过depends属性,指定这个步骤所依赖的步骤,省去了大部分的重复的操作。
4.使用Ant编译不引入Jar包的工程,很简单。当项目依赖除java的jre以外的一些jar包的时候,编译就出了很多乱子。
为了解决这个问题,参考了zhaoqiangster的博客,他的博客网址如下:http://zhaoqiangster.iteye.com/blog/317085。
结合我的build.xml代码,说明一下。
<?xml version="1.0" ?> <project name="structured" default="archive" > <target name="init"> <mkdir dir="build/classes" /> <mkdir dir="dist" /> </target> <path id="project.classpath"> <fileset dir="lib"> <include name="**/*.jar"/> </fileset> </path> <target name="compile" depends="init" > <javac srcdir="src" destdir="build/classes"> <classpath refid="project.classpath"></classpath> </javac> <!--the srcdir here notify the java fiels you want to compile--> </target> <target name="archive" depends="compile" > <jar destfile="dist/zhouyangpj.jar" basedir="build/classes" /> </target> <target name="clean" depends="init"> <delete dir="build" /> <delete dir="dist" /> </target> </project>
解决引用jar包编译,其实很简单。通过定义path,设定了jar包所在的路径(即lib文件夹),并通过**/*.jar批量引入这个文件夹下所有的jar包。
在编译java文件的时候,在引入jar包的路径,从而保证了编译的正常执行。
如:<classpath refid="project.classpath"></classpath>这段。
至此,4个问题得到解决。