ANT这个工具相信很多人都用过,在Java的代码编译打包这方面采用ANT来自动处理是非常方便的,关于ANT本身的介绍和使用,大家可以在网上找一下,有很多说明,这里不再重复。
重点来讲一下如何直接在Java代码中调用ANT,这样的好处是我们可以将ANT的各个功能同我们自己的软件紧密的结合在一起,不需要单独配置ANT,直接在Java代码中调用,非常方便。
1:基本环境,建议用Eclipse这个工具来做为Java的基本开发工具,用Eclipse的向导新建一个Java工程test。
2:将ANT的以下几个jar文件添加到刚才新建的test工程的构建引用路径下面,即添加到classpath中去:ant-lanucher.jar、ant.jar、ant-jakarta-log4j.jar这三个jar文件是最基本的,必须添加进去,如果要用到ANT的一些其它类,需要添加相应的jar文件,具体可以参考ANT的帮助文件。这三个文件简单说明一下,ant-lanucher.jar里面的类是ANT程序启动时必须要用到的,在Java代码中调ANT时,是需要通过这个包中的类来启动ANT里面的类去执行定义的动作,这个包是启动入口类; ant.jar这个包里面是ant定义的一些核心功能类的class,如copy文件,删除文件,执行数据库脚本,打包等等,即是具体的核心功能实现类,如果是一些附加的ant功能,则在其它jar包里面,这个只有非常核心的类在里面; ant-jakarta-log4j.jar是ant重新包装了log4j的类,实现ANT自己格式的log4j的日志文件记录。
3:在test工程里面新建一个类,类里面增加一个Java的main方法,在main方法中添加如下代码,并导入相关的package:
PrintStream logstream = null; //这里是定义一个ANT执行时日志文件的输出流对象
Project pj=new Project(); //初始化一个ant的Project对象
pl.setName("ant_project"); //设置project的名称,具体的值可以随意改成其它字符串都可以
pj.init(); //ANT自己的方法初始化Project对象
DefaultLogger cl=new DefaultLogger();
//定义一个默认的日志流,默认的日志流是采用log4j来记录的,所以在前面要求将ant-jakarta-log4j.jar这个文件加到classpath中去。
logstream=new PrintStream(new FileOutputStream("C:/test.log"),true);
//下面两行是设置ANT执行过程中要输出的一些信息流,必须设置,否则后面将得不到具体的日志消息
cl.setErrorPrintStream(logstream);
cl.setOutputPrintStream(logstream);
//设置ANT记录日志的消息级别,MSG_VERBOSE是表示记录详细的日志消息
cl.setMessageOutputLevel(Project.MSG_VERBOSE);
//将前面定义好的消息记录器绑定到Project上
pj.addBuildListenter(cl);
//生成一个Target对象,为后面添加具体的Task做准备
Target tg=new Target();
tg.setProject(pj); //设置target的Project归属,必须设置,Target必须属于某一个Project
tg.setName("target1"); //设置Target的名称
pj.addTarget(tg); //将Target添加到Project中
Copy cp=new Copy(); //具体生成一个功能Task类对象,复制文件的对象
cp.setTodir(new File("C:/bbb")); //设置要将文件复制的目的地
FileSet set=new FileSet(); //定义目录集,这样在后面可以自己定义一些规则
set.setDir(new File("C:/aaa")); //定义目录集关联的实际目录路径
set.createInclude().setName("**/*.txt"); //设置这个目录集包括的规则,即这个目录下面所有的.txt后缀的文件
cp.addFileset(set); //将目录集绑定到具体的对象中
cp.setOverwrite(true);//设置在复制文件时,如果目标文件己经存在,将采用直接覆盖的方式
cp.setFailOnError(true); //设置在复制文件过程中有文件复制失败时,则中断执行这个过程
cp.setPreserveLastModified(true); //设置复制文件时保留文件的最后修改时间
cp.setProject(pj); //设置Task的Project归属
cp.setTaskName("cp"); //设置Task的名称
tg.addTask(cp); //将Task添加到Target中,Task不能单独存在,也不能直接添加到Project中
Throwable ta=null;
try {
pj.executeTarget(tg.getName()); //开始执行Project中指定的Target
}catch (Exception e){
ta=e;
} finally {
/* 在日志文件当中生成执行成功或失败的消息,调用这个方法后,如果ANT的Project执行成功,则会在日志文件当中生成一行“BUILD SUCCESSFUL”或"BUILD FAILED"这样的字符串,在执行失败时,同时会将异常消息打印在日志文件中,所以这个方法比较重要 */
pj.fireBuildFinished(ta);
logstream.close();
}
程序的主体内容就是这样的,大家可以自己去测试一下,有问题时尽量多看看ANT的帮助手册,其它ANT的帮助手册真的是很完整的,基本上我们需要的东西在里面都是可以找到的。
ANT本身己有的核心功能基本上能满足我们大部分的功能需求,有些时候可能需要我们去继承它的类,然后根据自己的业务逻辑增加相应的处理过程和方法,这里也不做说明,建议还是多看一下帮助手册,这里只是讲一下如果在Java代码中直接调用ANT。
xml例子:
<?xml version="1.0" encoding="UTF-8"?>
<project name="lee_ant_test1" default="run" basedir=".">
<property name="src" value="."/>
<property name="dest" value="classes"/>
<property name="ant_test1_jar" value="ant_test.jar"/>
<target name="init">
<mkdir dir="${dest}" />
</target>
<target name="compile" depends="init">
<javac srcdir="${src}" destdir="${dest}"/>
</target>
<target name="build" depends="compile">
<jar jarfile="${ant_test_jar}" basedir="${dest}"/>
</target>
<target name="run" depends="build">
<java classname="Ant_test" classpath="${dest}"/>
</target>
<target name="clean">
<delete dir="${dest}"/>
<delete file="${ant_test_jar}" />
</target>
<target name="return" depends="clean,run">
<ant target="clean"/>
<ant target="run"/>
</target>
</project>
分享到:
相关推荐
在"apache ant使用例子"中,我们可以通过一个名为"HelloAnt"的MyEclipse工程实例来学习如何使用Ant。MyEclipse是Eclipse IDE的一个扩展,特别适合于Java EE项目的开发,它内置了对Ant的支持,使得我们可以方便地在...
以下是一个简单的示例,展示了如何在Java程序中启动Ant构建: ```java import org.apache.tools.ant.BuildException; import org.apache.tools.ant.Main; public class AntExecutor { public static void main...
总结来说,这个主题将介绍如何使用Ant进行Java项目的构建,特别是在Eclipse环境中。通过一个简单的例子,学习者将理解Ant的基本用法,包括编写build.xml文件,配置和执行构建任务,以及在Eclipse中集成和管理Ant构建...
例如,可以定义一个属性`src.dir`来表示源代码目录,然后在多个任务中使用它。 3. **目标(Target)**:目标是一组相关任务的集合,它们按顺序执行。一个Ant脚本可以包含多个目标,每个目标代表构建过程的一个阶段。...
在实际使用JavaAnts时,用户需要编写一个Ant构建文件(通常是build.xml),在这个文件中定义上传和下载的目标(targets)。每个目标是一系列任务的集合,通过调用这些目标,用户可以触发文件的上传或下载操作。例如...
在这个最简单的实例中,我们将深入探讨如何设置和使用Ant。 首先,我们需要理解Ant的基本结构。Ant的核心概念是任务(tasks),它们是执行特定操作的单元,比如`javac`任务用于编译Java源代码,`jar`任务用于创建...
本示例将探讨如何在Java中使用注解以及如何通过Ant构建工具来运行带有注解的程序。 首先,Java注解以`@`符号开头,后面跟着注解类型。例如,`@Override`是一个内置注解,表示方法试图重写超类中的方法。其他常见的...
Java的Ant打包工具是开发过程中不可或缺的一部分,尤其在构建、部署和自动化任务管理方面发挥着重要作用。Ant是由Apache软件基金会开发的一个开源项目,其设计灵感来源于Make,但使用XML来描述构建过程,使得构建...
在 Ant 中调用 Java 类是常见的需求,特别是在执行自定义逻辑或需要运行特定 Java 程序时。本文将详细解释如何使用 Ant 脚本来调用 Java 类,并结合提供的文件内容进行解析。 首先,我们需要了解 Ant 的 `<java>` ...
在IT行业中,Ant是Apache软件基金会的一个开源项目,它是一个基于Java的构建工具,主要用于管理Java项目的构建过程。Ant以其灵活性和可配置性而受到广大开发者喜爱,它使用XML来描述构建过程,使得构建脚本易于理解...
这个"JAVA RMI简单例子"旨在帮助我们深入理解RMI的基本原理和实现步骤。 RMI的核心概念包括远程接口、远程对象和RMIC编译器。首先,我们需要定义一个远程接口,该接口声明了可以在远程服务器上执行的方法。这些方法...
在"ant小例子ant小例子"这个主题中,我们主要关注的是如何使用Ant来部署一个Struts应用。Struts是一个开源的MVC(模型-视图-控制器)框架,用于构建企业级的Java Web应用程序。它提供了一种结构化的框架,使得开发者...
在"ant导出jar包例子"中,`build.xml`文件可能包含如下内容: ```xml ${build.dir}/classes"/> ${build.dir}/jar"/> ${build.dir}"/> ${classes.dir}"/> ${jar.dir}"/> ${src.dir}" destdir="${...
在本主题中,我们将深入探讨如何使用Java来对文件进行zip压缩和解压缩,并提及`ant.jar`的作用。 首先,让我们来看一下`JavaZip.java`这个文件。它很可能包含了一个示例程序,演示了如何使用Java API来压缩和解压缩...
Apache Ant 是一个由Java...这个例子将帮助初学者理解Ant的基本结构和命令行界面,以及如何在实际项目中使用Ant进行构建。通过分析和运行这个"Hello World"项目,你可以快速上手Ant,为进一步深入学习和应用打下基础。
Ant,全名Apache Ant,是Java社区中广泛使用的构建工具,它的主要作用是自动化Java项目的构建过程,包括编译源代码、打包、测试和部署等。Ant的设计理念是跨平台性和可扩展性,这两个特性使其在众多构建工具中...
在Java开发中,有时我们需要对一组文件进行批量处理,例如将它们打包成一个ZIP压缩文件。在这种场景下,Apache Ant工具提供了一种高效且灵活的方法。Ant是一个基于XML的构建工具,它允许开发者通过简单的配置文件来...
在“Ant 使用小例子”这个主题中,我们将深入理解Ant的基本概念,以及如何通过一个简单的“ChatServer”项目来应用这些概念。 Ant 的核心是构建文件,通常命名为`build.xml`,这是一个XML格式的文件,其中包含了...
在这个"Ant+JUnit测试报告实际例子"中,我们将深入探讨如何结合这两者来生成详细的测试报告。 首先,`build.properties` 文件通常包含了构建过程中的配置属性,如项目版本、库路径、源码编码等。这些设置可以被 `...