Ant初使用

来源:互联网 发布:iphone移动数据不能用 编辑:程序博客网 时间:2024/04/30 01:36

ant 官网:http://ant.apache.org/


1.下载解压,不叙......  下载bin: apache-ant-1.9.1-bin.zip   不是src:apache-ant-1.9.1-src.zip 

2.配置环境变量:

ANT_HOME:解压的文件目录 
PATH:将ANT命令加入path  ..........%ANT_HOME%\bin; 
JAVA_HOME: 必须的!
cmd下验证:ant -version
3.创建示例:
示例说明:将一个pojo转为json输出,json需要的jar包:
commons-beanutils-1.7.0.jar 
commons-lang-2.1.jar 
ezmorph-1.0.2.jar 
json-lib-1.1-jdk15.jar
commons-collections-3.2.1

还需要commons-logging剩下的自己看提示添加

 4.eclipse下演示:

新建立build.xml,注意:没有xml的头部声明!!

<!--project元素。name属性指定工程的名称,default属性 指定ant默认执行的target,即不指定要执行的target时,ant执行的target。basedir指定本工程的基准目录,这里指定为 当前目录。 --><project name="AntDemo" default="compile" basedir="."><!--property元素,定义了两个元素,供后面以${元素名}的形式引用。 --><property name="targetdir" value="classes" /><property name="srcdir" value="src" /><!--定义一个path元素,指定id属性,供后面引用 --><path id="library" ><!--定义一个fileset元素,用于指定需要用到的文件。dir属性指定哪个目录下的文件。 --><fileset dir="lib"><!--指定包含lib目录下的所有jar包 --><include name="*.jar"/></fileset></path><!--定义一个target元素,name属性为必须,用于标识此target。description属性用于描述此target,无太大意义。depends属性指定执行此target,所依赖的其他target。这里指定为了运行compile这个target,需首先执行clean,copy-resources这两个target。 --><target name="compile" description="Compiles the Task" depends="clean"><!--javac是ant的核心任务(task),用于编译JAVA源程序。srcdir属性指定源程序所在的目录,${srcdir}表明引用上面定义的名为srcdir的property元素的值。destdir指定编译后生成的.class文件的输出目录。同样地,这里使用了${targetdir}的形式引用了上面定义的名为targetdir的property元素的值。classpathref表明引用上面定义的id为library的path元素。在这里,即可把它包含的.jar包加载到classpath中,而不需要像笔者以前那样自己手动运行setclasspath命令。 -->     <javac srcdir="${srcdir}"  destdir="${targetdir}"  classpathref="library"  includeantruntime="no"/>     </target>     <!--定义一个名为clean的target。 --><target name="clean"><!--delete是ant的一个核心任务,用于删除目录或文 件。这里用来删除classes目录。即先把以前创建的classes目录删除,免得旧文件造成干扰 --><delete dir="${targetdir}"/><!--mkdir也是一核心任务,用于创建目录。这里用来 新创建classes目录 --><mkdir dir="${targetdir}"/></target><target name="copy-resources"><!--copy也是ant的一个核心任务,用于复制目录或文 件。todir指定复制的目标目录。本示例未使用此任务 --><copyto dir="${targetdir}"><!--fileset元素指定要复制的文件集,dir属性指定复制的源目录,exclude元素指定排除此目录下的所有java源文件,即复制除这些文件之外的所有文件 --><fileset dir="${srcdir}"><exclude name="**/*.java"/></fileset></copyto></target><!--depends属性指定运行此target应先运行名为compile的target --><target name="run" depends="compile"><!--java是ant的核心任务,用于执行某个java类。classname属性用于指定要运行的类,这里要用到类的全名fork设为true表明使用另外的JVM来运行我们的JAVA类,而不是使用运行ant的那个JVM。classpathref与上面的javac里的一样--><java fork="true" classname="abc.test.AntDemo"  classpathref="library"><!--将classes目录加载到classpath中--><classpath path="${targetdir}"/></java></target></project>

Student类:

package abc.test;public class Student {private String name;private String sex;private int age;public String getName() {return name;}public void setName(String name) {this.name = name;}public String getSex() {return sex;}public void setSex(String sex) {this.sex = sex;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}}

主函数:

package abc.test;import net.sf.json.JSONObject;public class AntDemo {/** * @param args */public static void main(String[] args) { {          Student user = new Student();          user.setName("General Patton");          user.setAge(60);         user.setSex("F");        JSONObject json = JSONObject.fromObject(user);          System.out.println(json.toString());      }  }}

为什么需要Ant?

jbuilder,eclipse都可以完成自动部署,为什么还需要ant?

一下摘字网络:

我个人的理解如下,不知道对不对:
1:ANT 的平台无关性,适合在 windows 和 UNIX 多种平台使用
2:ANT 的编译,打包和部署比较清晰,比 IDE 的隐藏性处理更容易理解和学习
___________________________________________________________________________________

根据我自己的经验,Eclipse和Ant是相辅相成的,Eclipse作为一个IDE是为了加快开发速度,而不应该作为编译和部署的工具。 

通常一个J2EE项目,少则5,6个,多则几十个开发者用Eclipse开发,而每个人在Eclipse中的设置都不可能完全一样。等你要部署这个项目的时候,诸多问题,比如类库的路径设置,项目之间的相互关联,就会逐一出现。

而用ANT就不会出现这些问题,用ANT编译,打包,发布可以保证一个项目在任何一个平台下都可以部署。ANT还允许在build.properties中设置参数,可以控制如何读取系统环境,如何寻找需要的类库等。 反过来说,如果你要部署你的项目到一个新的服务器上,你总不置于去吧Eclipse安上去,再在Eclipse中设置路径等参数吧?

而且Ant的功能远不止这些,需要学的太多。

__________________________________________________________________________________________________

看看ant document中怎么写的,Why another build tool when there is already make, gnumake, nmake, jam, and others? 

跨平台、基于java、XML,另外通过自己定义user ant,你可以作任何想作的事情

___________________________________________________________________________________________________

Ant能完成编译,部署一套动作~ 而且是跨平台...

没ANT时代, windows下部署要写.bat文件, unix下要写gmake, 但现在只要写XML形式的ANT...(把ANT原版文档翻译过来,就是这个意思~)

要学ANT的XML语法,我觉得大没必要~ 因为越来越多的工具支持自动书写ANT XML, 你只要轻松的在IDE GUI上点点就行拉~~ HOHO...

___________________________________________________________________________________________________

其实Ant的好处就是帮助弄清楚你这个工程是怎么生成的逻辑,否则用eclipse这种工具,很容易忽视一些小地方。一切太智能化,只能说对你的帮助不大,也许你会做的也就是敲几行代码了。


熟悉介绍:

failonerror 默认为true,<delete dir="${build.dir}" failonerror="false" /> 构建失败还可继续执行

eclipse 的ant插件默认执行缺省




参考文章:

http://legend2011.blog.51cto.com/3018495/898736  ant入门示例——mybatis学习笔记之预备篇(二)

http://www.paramiao.com/?p=115   浅谈Ant编译

http://www.blogjava.net/pzxsheng/archive/2012/04/11/373816.html 利用 Ant 和 Eclipse 有效地提高部署工作效率

http://blog.csdn.net/hbcui1984/article/details/1954537   使用Ant发布web应用到tomcat
http://www.cnblogs.com/wufengxyz/archive/2011/11/24/2261797.html    Java Ant build.xml详解


原创粉丝点击