“Apache Ant是一个基于Java 的生成工具。据最初的创始人James Duncan Davidson 介绍,这个工具的名称是 another neat tool(另一个整洁的工具)的首字母缩写。”
在初步使用过程中,对于Ant的作用,我觉得主要即辅助Java的编译,例如定义编译之前的准备工作、项目之间的依赖关系等等。≈.NET中的项目文件(.csproj)。
1.下载Ant,(http://ant.apache.org/bindownload.cgi)
2.安装Ant
将下载的包apache-ant-1.8.0-bin.zip解压,放在适当的位置,如本例放置于:C:\apache-ant-1.8.0
为方便使用,还需设置OS环境变量,进入computer/properties/environment variables/user variables,
添加一个用户变量: ANT_HOME=C:\apache-ant-1.8.0
修改用户变量 PATH,添加 %ANT_HOME%\bin
3.测试Ant安装
打开命令行,输入ant,如果能见到类似如下信息,证明Ant配置成功:
Buildfile: build.xml does not exist!
Build failed
4.新建测试项目
在Eclipse中新建项目“HelloAntWorld”,代码如下:
![](https://i-blog.csdnimg.cn/blog_migrate/8f900a89c6347c561fdf2122f13be562.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/961ddebeb323a10fe0623af514929fc1.gif)
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
public class HelloWorld {
private static String ORACLEUSERNAME;
private static String ORACLEPASSWORD;
private static String ORACLEURL;
private static String ORACLEDRIVER;
public static void main(String[] args) throws SQLException {
ORACLEUSERNAME = " emh " ;
ORACLEPASSWORD = " emh " ;
ORACLEURL = " jdbc:oracle:thin:@147.128.20.66:1521:ems " ;
ORACLEDRIVER = " oracle.jdbc.driver.OracleDriver " ;
//
jdbc2Oracle();
}
private static Connection getConn(String pUser, String pPwd, String pUrl, String pDriver) throws Exception {
Class.forName(pDriver);
return DriverManager.getConnection(pUrl, pUser, pPwd);
}
private static void jdbc2Oracle() {
Connection conn = null ;
Statement stmt = null ;
ResultSet rs = null ;
//
try {
conn = getConn(ORACLEUSERNAME, ORACLEPASSWORD, ORACLEURL, ORACLEDRIVER);
stmt = conn.createStatement();
rs = stmt.executeQuery( " select table_name from user_tables where rownum<10 " );
//
while (rs.next()) {
String t = rs.getString( 1 );
System.out.println(t);
}
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
rs.close();
stmt.close();
conn.close();
} catch (Exception e) {
}
}
}
}
在根目录添加Ant的build.xml文件,内容如下:
![](https://i-blog.csdnimg.cn/blog_migrate/8f900a89c6347c561fdf2122f13be562.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/961ddebeb323a10fe0623af514929fc1.gif)
< project name ="main" default ="all" basedir ="." >
< target name ="all" depends ="init,compile,jar" >
</ target >
< target name ="init" >
< property name ="dirs.base" value ="${basedir}" />
< property name ="classdir" value ="${dirs.base}/classes" />
< property name ="src" value ="${dirs.base}/src" />
< property name ="lib" value ="${dirs.base}/lib" />
< property name ="outputjar" value ="${dirs.base}/lib/HelloAntWorld.jar" />
< property name ="classpath" value ="${dirs.base}/lib/ojdbc6.jar" />
< mkdir dir ="${classdir}" />
< mkdir dir ="${lib}" />
</ target >
< target name ="jar" depends ="init" >
< jar jarfile ="${outputjar}" manifest ="${basedir}/HelloAntWorld.mf" >
< fileset dir ="${classdir}" />
</ jar >
</ target >
< target name ="compile" depends ="init" >
< javac debug ="true" srcdir ="${src}"
destdir ="${classdir}" />
</ target >
< target name ="clean" depends ="init" >
< delete dir ="${classdir}" />
</ target >
</ project >
学习build.xml的文件最简单的方法是照猫画虎,从其它的项目中拿到build.xml,然后根据自己的需要增加或者简化。对build.xml来说,最核心的是定义任务即target,这里定义的每个target,将来可以在命令行调用Ant时使用,如“Ant clean”即执行上面定义的“clean”,实际即删除classes目录下的所有文件,以此类推。
5.使用Ant编译Java项目
Eclipse对Ant集成很好,真正开发时也可以借由Eclipse来调用Ant进行项目编译,只要做相应的设置即可。这里仍以命令行为例:
C:\DEV\HelloAntWorld>ant all
以下为命令输出。可以看到调用的是build.xml中定义的target “all”,由于它的依赖(depends)中包括“init”,“compile”,“jar”,所以在命令输出中这三个依赖项依次执行完,最后执行“all”:
Buildfile: C:\DEV\HelloAntWorld\build.xml
init:
compile:
[javac] C:\DEV\HelloAntWorld\build.xml:24: warning: 'includeantruntime' was not set, defaulting to build.sysclasspath=last; set to false for repeatable buil
ds
[javac] Compiling 1 source file to C:\DEV\HelloAntWorld\classes
jar:
[jar] Building jar: C:\DEV\HelloAntWorld\lib\HelloAntWorld.jar
all:
BUILD SUCCESSFUL
Total time: 1 second
C:\DEV\HelloAntWorld>cd lib
C:\DEV\HelloAntWorld\lib>java -jar HelloAntWorld.jar
6.其它
有时候我们会从其它地方拷贝Java项目,如果这些项目未使用Ant,那么我们常常要新建项目然后导入,然后才能使用。如果使用了Ant,我们可以在Eclipse中选择File/New/Project../Java/Java project from existing Ant buildfile,然后选择相应的build.xml文件即可导入项目(有点像在.NET中使用项目文件.csproj,只不过.NET中更加简单)。
多提一句,实际由build.xml自动导入项目是依赖于build.xml中“javac”项中的“srcdir”,所以如果build.xml中没有任何target中包含“javac”项目(当然绝大多数情况下肯定会有),而你选择由build.xml导入项目,则会报错。
这是一个入门简例,关于Ant更加详细的内容,参见文件:Apache Ant Go Through.pdf