在自己的程序中调用Ant
Ant的任务其实就是一段功能代码。Ant内置的大量任务对于我们开发Java应用具有非常大的意义,为什么我们不能直接使用呢?
因为尽管在程序中调用Ant的任务并不复杂,而且我们知道Ant的任务其实都是一些Java类,调用的方法无非就是执行这些类而已,不过在执行之前需要对它做一些初始化的工作,所以我们需要引用一个Task类的子类来实现这个功能,比如如下代码:
package com.sharetop.antdemo;
import org.apache.tools.ant.*;
import org.apache.tools.ant.taskdefs.*;
import java.io.File;
public class RunAntTask {
public RunAntTask() {
}
public static void main(String args[]){
AntJAR j = new AntJAR();
j.setBasedir(new File("./classes"));
j.setJarfile(new File("aaa.jar"));
j.execute();
}
}
final class AntJAR extends Jar {
public AntJAR() {
project = new Project();
project.init();
taskType = "jar";
taskName = "jar";
}
} |
注意AntJAR类的构造方法,先创建了Project并初始化它,这是直接调用Task的必需条件。
如果要在自己的程序中执行Ant,需要了解的是Ant定义的几个BuildEvent,它包括:
◆ Build started
◆ Build finished
◆ Target started
◆ Target finished
◆ Task started
◆ Task finished
◆ Message logged
我们需要做的是实现BuildListener接口来处理各种事件,而执行Ant的方法与上面给的例子非常类似,以实际开发的AntBuilder软件的部分代码为例:
public void buildTarget(String targetName,String buildFileName) {
try {
Project p = new Project();
p.init();
File f = new File(buildFileName);
p.setUserProperty("ant.file",f.getAbsolutePath());
ProjectHelper.configureProject(p,f);
p.addBuildListener(this);
if( targetName==null )
p.executeTarget(p.getDefaultTarget());
else
p.executeTarget(targetName);
}
catch (Exception ex) {
jTextArea1.append(ex.getMessage());
}
} |
创建Project并初始化,设置它的配置文件(build.xml),执行它缺省的或指定的Target,然后在实现了BuildListenser接口的监听器类中对你感兴趣的事件作处理,代码如下:
public void buildStarted(BuildEvent event){ /* nothing*/ }
public void buildFinished(BuildEvent event) { /* nothing*/ }
public void targetStarted(BuildEvent event) {
this.jTextArea1.append(event.getTarget().getName()+": \n\r");
}
public void targetFinished(BuildEvent event) {/* nothing*/ }
public void taskStarted(BuildEvent event) {/* nothing*/ }
public void taskFinished(BuildEvent event) { /* nothing*/ }
public void messageLogged(BuildEvent event) {
int prior = event.getPriority();
switch(prior){
case Project.MSG_ERR :
this.jTextArea1.append("["+event.getTask().getTaskName()+"]Err:"
+event.getMessage());
break;
case Project.MSG_INFO:
this.jTextArea1.append("["+event.getTask().getTaskName()+"]"+event.getMessage
());
break;
case Project.MSG_WARN:
this.jTextArea1.append("["+event.getTask().getTaskName()+"]"
+event.getMessage());
break;
case Project.MSG_VERBOSE:
this.jTextArea1.append(event.getMessage());
break;
}
} |
Build.xml文件的写法每个公司都有不同,这里没有太大的参考价值,所以略去。
分享到:
相关推荐
这篇“Java的Build工具—Ant应用指南(1)”将引领我们走进Ant的世界,了解其基本概念、配置和使用方法。 1. Ant基本概念 - 构建文件:Ant的主要工作是通过读取一个名为`build.xml`的XML文件来执行构建任务。这个...
本指南将深入探讨Ant工具的使用,帮助开发者高效地管理项目构建。 一、Ant概述 Ant是一个开源的Java构建工具,其设计灵感来源于Unix的Make工具。它通过XML配置文件(通常名为build.xml)来定义任务和目标,使得构建...
《Ant构建工具学习指南》 Ant,全称为Apache Ant,是Apache软件基金会开发的一个开源项目,主要用于Java应用程序的构建过程。作为一个基于Java的build工具,Ant以其灵活性、可移植性和强大的功能,在Java开发者中广...
ant说明指南ant说明指南ant说明指南ant说明指南
Ant是Apache软件基金会下的一个Java项目,它是一个构建工具,主要用来自动化Java应用程序的构建过程。这个“Ant使用指南”涵盖了Ant的基本概念、配置、任务和实战应用,旨在帮助开发者更好地理解和使用Ant。 1. **...
《Ant应用开发指南》是IT领域中针对Ant构建工具的一份详尽的教程与资源,旨在帮助开发者深入了解并掌握Ant的使用方法与实践技巧。Ant,最初作为一个缩写代表“Another Neat Tool”,是一个功能强大的构建工具,尤其...
**Apache Ant** 是一款流行的开源构建工具,专门设计用于处理Java项目的构建需求。它由James Duncan Davidson创建,并以“Another Neat Tool”(另一个整洁的工具)的首字母缩写命名。Ant的主要优势在于其跨平台特性...
《Ant权威指南》是关于Apache Ant这一开源构建工具的详细参考书籍,旨在帮助读者深入理解和高效使用Ant进行软件项目的构建和管理。Ant以其基于XML的构建文件格式和强大的任务库,成为了Java项目中的首选构建工具。...
Java Card是一种在智能卡或类似的微控制器设备上运行Java应用程序的技术,而Ant是Apache软件基金会的一个开源项目,是一个基于XML的构建工具,用于自动化Java项目的构建、编译、测试和部署过程。 【描述】提到"Ant ...
《Ant权威指南》是一本深度解析Apache Ant的权威著作,对于Java开发者来说,它是构建自动化不可或缺的参考书籍。Ant是一个基于Java的构建工具,它允许开发者通过XML来定义项目构建的流程,使得软件构建过程更加规范...
Ant由于其灵活性和广泛的社区支持,被广泛应用于Java项目中,与Maven和Gradle等现代构建工具一起,构成了Java开发者的重要工具链。虽然Maven和Gradle在某些方面提供了更高级的功能,但Ant仍然是很多老项目和特定场景...
Ant采用XML格式来定义构建过程,提供了丰富的任务(task)集合,适用于自动化编译、测试和部署Java应用程序。由于其简单易用、高度可配置的特点,在Java开发领域广受欢迎。 #### 二、环境搭建 为了能够使用Ant,首先...
Apache Ant是一个基于Java的构建工具,其名称源自“Another Neat Tool”(另一个整洁的工具)的首字母缩写。构建工具的主要作用是将源代码和相关的资源文件转换成可执行文件或可部署的包。随着软件项目的复杂度增加...