ant学习---实现Java项目的编译运行

本文介绍了如何使用Ant工具编译和运行Java项目。通过两种方式执行build.xml文件:右击文件运行和在终端中输入命令。详细解析了project元素的name、default和basedir属性,并提及获取project中所有target名称的方法。此外,文章还讲解了Ant的copy任务,用于文件复制,以及如何使用javac任务进行Java程序编译。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

ant是纯java语言写的,跨平台的,较makefile,优点更多,跨平台之间也很方便。如今项目上有用到ant,因为之前都没接触过,所以在网上找了点资料,稍微整理了下,写个java工程来理解下。
一、ant的下载、配置
下载:官网地址:http://ant.apache.org/ , 我下的是December 29, 2013 - Apache Ant 1.9.3 Released(apache-ant-1.9.3-bin.tar)。下载后解压到某个目录就可以了(我放在D:\apache-ant-1.9.3)。
配置:添加环境变量ANT_HOME,指向ant解压后的根目录(我的是D:\apache-ant-1.9.3);然后再把ant的bin目录路径添加到path中(我的是D:\apache-ant-1.9.3\bin);最后在Terminal或者命令提示符下运行ant -version就可以查看版本信息了。

二、ant的关键元素
ant的构件文件是基于XML编写的,默认名称为build.xml。当然,可以是其他名称,只是在运行时需要通过ant -f XX.xml 来指定具体文件了。
通过创建一个java工程来分析ant的关键元素。工程名:helloworld

java代码:

public class Hello {
	public static void main(String[] args) {
	       System.out.println("Hello,world");
	    }
}
build.xml代码:

<?xml version="1.0"?>
<project name="helloworld" default="jar" basedir=".">
    <target name="clean">
        <delete dir="build"/>
    </target>
    
    <target name="compile" depends="clean">
        <mkdir dir="build/classes"/>
        <javac srcdir="src" destdir="build/classes" includeantruntime="false"/>
    </target>
    
    <target name="run" depends="compile">
        <java classname="Hello" classpath="build/classes"/>
    </target>
    
    <target name="jar" depends="run">
        <jar destfile="Hello.jar" basedir="build/classes">
        	<manifest>
            	<attribute name="Main-Class" value="Hello"/>
        	</manifest>
        </jar>
    </target>
    
</project>

通过xml文件运行工程的方法有两种:
(1)通过右击build.xml文件,选择Run As-->Ant Build就可以通过该xml文件执行java工程了,如图。


(2)也可以通过在Terminal等终端,输入ant target名 或 ant -f XX.xml target名 来执行该xml文件,如图。



接下来分析build.xml文件内容来理解ant的关键元素。
1.project元素
project元素是Ant构件文件的根元素,ant构件文件至少应该包含一个project元素,否则会发生错误。在每个project元素下,可包含多个target元素。下面介绍project元素的各属性。
1)name属性
用于指定project元素的名称。
2)default属性
用于指定project默认执行时所执行的target的名称。
3)basedir属性
用于指定基路径的位置。该属性没有指定时,使用Ant的构件文件的附目录作为基准目录。

ps:如果用户想得到某个project下所有的target的名称,可以通过在ant命令里加上-projecthelp来达到该目的:

$ ant -projecthelp
Buildfile: D:\Users\binchen\workspace\helloworld\build.xml

Main targets:

Other targets:

 clean
 compile
 jar
 run
Default target: jar

2.target元素
target是Ant的基本执行单元,它可以包含一个或多个具体的任务。多个target可以存在相互依赖关系。它有如下属性:
1)name属性
指定target元素的名称,这个属性在一个project元素中是唯一的。我们可以通过指定target元素的名称来指定某个target。
2)depends属性
用于描述target之间的依赖关系,若与多个target存在依赖关系时,需要以“,”间隔。Ant会依照depends属性中target出现的顺序依次执行每个target。被依赖的target会先执行。
3)if属性
用于验证指定的属性是否存在,若不存在,所在target将不会被执行。
4)unless属性
该属性的功能与if属性的功能正好相反,它也用于验证指定的属性是否存在,若不存在,所在target将会被执行。
5)description属性
该属性是关于target功能的简短描述和说明。

3.property元素
该元素可看作参量或者参数的定义,project的属性可以通过property元素来设定,也可在ant之外设定。若要在外部引入某文件,例如build.properties文件,可以通过如下内容将其引入:<property file=” build.properties”/>
property元素可用作task的属性值。在task中是通过将属性名放在“${”和“}”之间,并放在task属性值的位置来实现的。
ant提供了一些内置的属性,它能得到的系统属性的列表与Java文档中System.getPropertis()方法得到的属性一致。
同时,ant还提供了一些它自己的内置属性,如下:
basedir:project根目录的绝对路径;
ant.file:buildfile的绝对路径,如上面的各例子中,ant.file的值为E:\build.xml;
ant.version:ant的版本;
ant.project.name:当前指定的project的name属性的值;
ant.java.version:ant检测到的JDK的版本。

三、ant的常用任务及使用

1.copy任务
该任务主要用来对文件和目录的复制功能。举例如下:
1)复制单个文件:

<copy file="file.txt" tofile="copy.txt"/>
2)对文件目录进行复制:
<copy todir="../newdir/dest_dir">
    <fileset dir="src_dir"/>
</copy>
3)将文件复制到另外的目录:

<copy file="file.txt" todir="../other/dir"/>
2.delete任务
对文件或目录进行删除,举例如下:
1)删除某个文件:

<delete file="photo/amigo.jpg"/>
2)删除某个目录:

<delete dir="photo"/>
3)删除所有的备份目录或空目录:(我试了下没效果)

<delete includeEmptyDirs="true">
    <fileset dir="." includes="**/*.bak"/>
</delete>
3.mkdir任务
创建目录。

<mkdir dir="build"/>
4.move任务
移动文件或目录,举例如下:
1)移动单个文件:

<move file="fromfile" tofile=”tofile”/>
2)移动单个文件到另一个目录:

<move file="fromfile" todir=”movedir”/>
3)移动某个目录到另一个目录:
<move todir="newdir">
    <fileset dir="olddir"/>
</move>
5.echo任务
该任务的作用是根据日志或监控器的级别输出信息。它包括message、file、append和level四个属性,举例如下:
<echo message="Hello World" file="logs/system.log" append="true">
这个例子是将Hello World追加到logs/system.log文件的尾部。


四、利用ant构建和部署Java工程
Ant可以代替使用javac、java和jar等命令来执行java操作,从而达到轻松的构建和部署Java工程的目的。
1.利用ant的javac任务来编译java程序

    <target name="compile" depends="clean">
        <mkdir dir="build/classes"/>
        <javac srcdir="src" destdir="build/classes" includeantruntime="false"/>
    </target>
2.使用ant的java任务运行Java程序
    <target name="run" depends="compile">
        <java classname="Hello" classpath="build/classes"/>
    </target>
3.使用ant的jar任务生成jar文件:运行该build.xml文件后,可看到在工程目录下生成了一个jar包Hello.jar
    <target name="jar" depends="run">
        <jar destfile="Hello.jar" basedir="build/classes">
        	<manifest>
            	<attribute name="Main-Class" value="Hello"/>
        	</manifest>
        </jar>
    </target>
这样,通过ant就完成了java项目的编译、运行,实现了通过脚本(其实是xml文件)来操作工程。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值