天天看点

Ant初使用

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" target="_blank" rel="external nofollow"  target="_blank" rel="external nofollow"   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" target="_blank" rel="external nofollow"  target="_blank" rel="external nofollow" >
			<!--将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}" failοnerrοr="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详解

继续阅读