Ant学习实例
Ant学习实例
1.安装Ant
先从http://ant.apache.org/下载Ant,解压到任一目录下面,比如E:\Lab
然后设置环境变量
ANT_HOME=E:\Lab\apache-ant-1.8.2
path=E:\Lab\apache-ant-1.8.2\bin
最后验证是否安装成功
在dos中输入ant,如果显示
Buildfile: build.xml does not exist!
Build failed
则安装成功
2.基础元素
project元素
project元素是Ant文件的根元素
project的属性
|
Attribute |
Description |
Required |
|
name |
项目名称 |
No |
|
default |
当没有指定target时使用的缺省target |
Yes |
|
basedir |
用于指定基路径的位置。该属性没有指定时,使用 Ant 的构件文件的附目录作为基准目录。 |
No |
target元素
target为Ant的基本执行单元,它可以包含一个或多个具体的任务。多个target 可以存在相互依赖关系
Ant会依照depends属性中target出现的顺序(从左到右)依次执行每个target。然而,要记住的是只要某个target依赖于一个target,后者就会被先执行。
|
<target name="A"/> <target name="B" depends="A"/> <target name="C" depends="B"/> <target name="D" depends="C,B,A"/> |
假定我们要执行target D。从它的依赖属性来看,你可能认为先执行C,然后B,最后A被执行。错了,C依赖于B,B依赖于A,所以先执行A,然后B,
然后C,最后D被执行。
一个target只能被执行一次,即时有多个target依赖于它。
若想更好的控制build过程,可以使用if或unless。
if 属性
用于验证指定的属性是否存在,若不存在,所在 target 将不会被执行。
unless 属性
该属性的功能与 if 属性的功能正好相反,它也用于验证指定的属性是否存在,若不存在,所在 target 将会被执行。
property元素
property元素可看作参量或者参数的定义(即经常使用的变量),project 的属性可以通过 property 元素来设定,也可在 Ant 之外设定。
name是变量的名称 value是变量的值,要用某个变量时使用${name}方式调用。
3.完整示例
创建一个java项目
HelloWorld.java
package com.test;
public class HelloWorld {
public static void main(String[] args) {
System.out.println("Hello world");
}
}
编写build.xml文件
注:build.xml放在和src同级目录,而不是在src下级目录
目录结构是
MyProject <dir>
|--lib <dir> --库目录
|--classes <dir> --目的文件目录
|--src <dir> --源文件目录
|--doc <dir> --api文档目录
|--build.xml
<?xml version="1.0" encoding="UTF-8" ?>
<project name="helloWorld" default="run" basedir=".">
<property name="src" value="src"/>
<property name="dest" value="build/classes"/>
<property name="lib" value="lib"></property>
<property name="hello_jar" value="hello1.jar"></property>
<!--初始化 之前执行删除操作-->
<target name="init" depends="clean">
<mkdir dir="${dest}"/>
</target>
<!--编译生成class文件 -->
<target name="compile" depends="init">
<javac srcdir="${src}" destdir="${dest}"></javac>
</target>
<!--将编译后的class文件打包-->
<target name="build" depends="compile">
<mkdir dir="${lib}"/>
<jar jarfile="${lib}/${hello_jar}" basedir="${dest}"></jar>
</target>
<target name="run" depends="build">
<java classname="com.test.HelloWorld" classpath="${lib}/${hello_jar}"></java>
</target>
<!--删除-->
<target name="clean">
<delete dir="${dest}"></delete>
<delete dir="${lib}"></delete><!-- 是dir 删除目录 ,不是file 删除文件-->
</target>
</project>
整个过程:初始化----编译----打包---放到相应的位置
参考:
http://www.cnblogs.com/philander/articles/1782254.html
http://www.cnblogs.com/elric/archive/2011/03/19/1988840.html
Ant学习实例的更多相关文章
- ant学习
如果在构建文件当中depends后面有多个依赖,而且这多个依赖还相互依赖,那么只会执行被依赖的任务,不会重复执行任务 ant学习
- 【转】Ant学习笔记——自己构建Ant编译环境
自从年初开始用NetBeans6.0,才接触到Ant. 这是今年6月份的一篇Ant学习笔记.安装 1.下载并构建环境. 去官网下载src包和bin包.解压缩它们到同一目录,运行build.bat, ...
- Ant学习-002-ant 执行 TestNG 测试用例时 [testng] java.lang.NoClassDefFoundError: com/beust/jcommander/ParameterException 解决方案
上篇文章中概述了 Ant windows 环境的基本配置,此文讲述在初次使用的过程中遇到的问题. 今天通过 ant 执行 TestNG 测试用例时,执行报错,相应的错误信息如下所示: Buildfil ...
- Ant学习-001-ant 基础知识及windows环境配置
一.Ant 概要基础知识 Apache Ant 是一个将软件编译.测试.部署等步骤联系在一起加以自动化的一个工具,大多用于Java环境中的软件开发,用以构建应用,或结合其他开源测试工具例如 git.T ...
- ant 学习与开发
ant 学习与开发 http://www.blogjava.net/amigoxie/archive/2007/11/09/159413.html
- Ant学习笔记
前言:这段时间在学习Ant,发现这是一个很强大的构建工具.你可能使用了很长一段时间,才发现Ant能做数不完的事.总之,个人觉得,Ant学习门槛低,入门简单,能大概看懂程序,写一些简单的脚本即可,剩下在 ...
- Ant学习--简单实例入门
步骤1.创建工程文件夹名字 F:\Helloworld 步骤2.编写java代码: package com.netease; public class Ant_test { public static ...
- Ant学习笔记(1) 基础知识
Ant Apache Ant 是一个基于 Java的构建工具. 下载Ant google.baidu.Windows用户下载zip格式.解压即可. Windows安装Ant Ant本质上是一个Java ...
- Ant学习总结3(很多的属性,用的时候方便查找)
感谢原作者:http://blog.csdn.net/lipeijs3/article/details/5137160 一. Ant 与 Makefile : GNU Mak ...
随机推荐
- OutputDebugString 输出信息到调试器
#include <Windows.h>#include <stdio.h>#include <stdarg.h> void __cdecl odprintf(co ...
- inline-block 垂直居中
<!doctype html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- 自定义Chrome 背景色 (FF需要User Styles插件)
Chrome有个自定义背景色的文件 Custom.css 默认里面什么字都没写 html, body {background-color: #e0dcc0!important;} 这个颜色 ...
- android搭建环境错误 daemon not running. starting it now on port 5037 ADB server didn't ACK
android搭建环境错误 daemon not running. starting it now on port 5037 ADB server didn't ACK ADB server didn ...
- Google Play和基于Feature的过滤
田海立@CSDN 翻译自Google Play and Feature-Based Filtering GooglePlay会过滤出那些对用户可见的应用程序,因此用户只能看到和下载那些与他们的设备兼容 ...
- HTTP协议是无状态协议,怎么理解?
Http是一个无状态协议,同一个会话的连续两个请求互相不了解,他们由最新实例化的环境进行解析,除了应用本身可能已经存储在全局对象中的全部信息外,该环境不保存与会话有关的不论什么信息. 自己的理解,在 ...
- hdu4370 0 or 1【最短路+建图】
转载请注明出处,谢谢:http://www.cnblogs.com/KirisameMarisa/p/4297627.html ---by 墨染之樱花 题目链接:http://acm.hdu.ed ...
- C# inherit
Case:class A has a construct. class B is inherit from class A and B also has a construct. What's the ...
- IE浏览器下<A>标签不能显示背景图片
修改前 background: url('./img/active/legendBg.png')no-repeat 修改后 background: url('./img/active/legendBg ...
- Spring boot实现数据库读写分离
背景 数据库配置主从之后,如何在代码层面实现读写分离? 用户自定义设置数据库路由 Spring boot提供了AbstractRoutingDataSource根据用户定义的规则选择当前的数据库,这样 ...