ant 关键字和关键语句
学习ant推荐的两个blog
http://www.cnblogs.com/huozhicheng/archive/2010/04/08/2533199.html
http://www.cnblogs.com/cyjch/archive/2012/03/28/2420761.html
http://ku-sunny.iteye.com/blog/966011
http://www.cnblogs.com/clarkchen/archive/2011/03/10/1980194.html
关键词
project 为ant构建文件的根元素,ant构建文件至少要包括一个根元素(project元素)
target 元素为ant的基本执行单元,可以包含一个或多个具体任务,多个target之间可以存在依赖关系,(若是与多个任务之间存在依赖关系时,需要以“,”间隔。)
echo 根据日志或监控器的级别输出信息,如message,file,append和level四个属性
default 默认要执行的target
depends target之间的依赖关系
if 只要project中有那个属性就执行当前if所在的target
unless 只要project中没有那个属性就执行当前unless所在的target
destdir 目标目录
basedir 工作的根目录 .为当前目录 即project所在的目录
srcdir 源程序的目录
path 用来表示一个类路径
ant的五个内置属性---可直接用el表达式提取到
(1.basedir工作的根目录 project基目录的绝对路径 .代表当前目录
2.ant.file 当前build.xml文件所在的局对路径如e:anttest/build.xml
3.ant.java.version ant检测到的jdk版本
4.ant.version ant的版本
5.ant.project.name 当前制定的project的name
)
假如某个用户想要得到某个project下的所有target的名称 可以使用ant -projecthelp指令
property(name和value) project内的属性 写在target外project内
===============================================================================================================
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
standalone 定义了外部定义的dtd文件的存在性
encoding 源代码的文件编码
=================================================================================================================
src path 编译的源目录,可以通过这样编译在不同文件夹里的文件
<target name="compile" depends="clean">
<mkdir dir="build/classes"/>
<javac srcdir="src" destdir="build/classes"/>
</target>
<!--通过srcdir指定要编译的文件目录,适合编译文件在同一个目录内-->
<javac encoding="utf-8" destdir="../WebContent/WEB-INF/classes" fork="true" memorymaximumsize="500M" source="${source}" target="${target}>
<src path="../src"/>
<src path="../eventinfo"/>
<src path="../detectsetting"/>
<classpath refid="ids7010-web-vcm.classpath"/>
</javac><!--适合需要编译的文件不在同一个目录内-->
refid reference id 的缩写,引用前边声明过的对象(例如file path)的id
fork:没有指定fork属性(默认为false),javac命令将和ant在同一个进程中执行,同时javac被分配的内存只有64MB,如果指定fork属性为true,javac命令将和ant不在同一个进程中执行,分配内存的大小将为memoryinitialsize、memorymaximumsize指定的大小。
source:指定版本号使编译出的(文件)类兼容该版本
target:根据指定的vm版本生成class文件
一般jdk都向下兼容向上不兼容 source在这里指编译出向下兼容的版本的类
如果用Eclipse,你可以在项目属性中编译选项里有设置生成兼容JDK1.4的类。但是如果你在Eclipse里自己写Ant脚本用<javac> 命令去编译java类,则生成的仍为JDK1.5的类(执行Ant脚本时与Eclipse设置的编译选项无关)。如何解决了,其实很简单,只要在<javac> ant 命令里加source参数。
===================================================================================
antcall target 表示调用其它的ant执行项,target为要调用的ant执行项名称
<antcall target="build"/>
<target depends="clean,build-project" name="build"/>
<target description="compile project" name="build-compiler">
<antcall target="build"/>
</target>
<!--调用其它的target-->
<mkdir dir="所要创建目录的所在的地址/目录名"/>
======================================================================
<copy file="所要复制的文件所在的地址/文件名" tofile="目标地址/文件名"/>
如果是当前目录的话就不用在文件名前加地址了
<copy file="所要复制的文件所在的地址/文件名" todir="目标地址"/>
<copy todir="目标目录"〉
〈fileset dir="被复制的目录"〉
〈!--只复制内容 并不拷贝文件夹--〉
</copy〉
includeemptydirs 用于指定在复制时是否复制空目录 默认为true 复制
<copy includeemptydirs="false" todir="../WebContent/WEB-INF/classes">
<fileset dir="../eventinfo" excludes="**/*.launch, **/*.java"/>
</copy>
这样即不复制空目录
========================================================================
<move file="所要移动的文件所在的地址/文件名" tofile="目标地址/文件名"/>
如果是当前目录的话就不用在文件名前加地址了
<move file="所要移动的文件所在的地址/文件名" todir="目标地址"/>
<move todir="目标目录">
<fileset dir="被移动的目录">
</move>
<!--移动过后删除被移动的文件夹-->
==========================================================================
<delete file="所要删除的文件所在的地址/文件名">
<delete dir="所要删除的文件所在的地址/目录名">
==========================================================================
<javac srcdir="要编译的java所在目录" destdir="存放编译好的class文件所在的目录"> <java classname="helloworld" classpath="class文件所在的目录"> <path> <pathelement location="../WebContent/WEB-INF/lib/jxl.jar"/> <!-- 具体指定到文件 --> </path> <path> <pathelement path="../WebContent/WEB-INF/lib"/> <!-- 具体指定到目录 --> </path>
在projectA中执行projectB的构件文件。projectA的构件文件内容如下
<?xml version="1.0"?>
<!-- 在projectA中执行projectB的构件文件 -->
<project name="porjectA" default="callProjectB">
<target name="callProjectB">
<echo message="In projectA calling projectB"/>
<ant antfile="subfile/projectB.xml" inheritAll="false" />
</target>
</project>
inheritAll 在Ant任务中inheritAll属性用于指定被调用的构件文件的project元素中可使用当前project元素中的属性。
这个属性类似于Java程序中类的继承关系。默认时inheritAll属性取值为true
false的话 子类就无法调用父类的属性 即projectB中的target就无法调用projectA的属性
ant -h 显示具体的命令行展示代码
exec 可以调用系统命令
============================================================================
1.Ant是一个Apache基金会下的跨平台的构件工具,它可以实现项目的自动构建和部署等功能
3.ant -projecthelp 可以得到project下所有的target的名称
5.复制目录或移动目录
都是将目录中的资源移动到目标目录中去
jar包可直接运行 java -jar x.jar来直接执行
ant 关键字和关键语句的更多相关文章
- 高性能mysql-----MySQL_explain关键字分析查询语句(一)
转载地址:https://www.cnblogs.com/xpp142857/p/7373005.html MySQL_explain关键字分析查询语句 通过对查询语句的分析,可以了解查询语句的执 ...
- Javascript关键字,条件语句,函数及函数相关知识
关键字 条件语句 作用域 回调 关键字 根据规定,关键字是保留的,不能用作变量名或函数名. 下面是一些ECMAScript关键字的完整列表. break ,case,catch,continue,de ...
- MySQL_explain关键字分析查询语句
版权声明:本文为博主原创文章,转载请注明出处. 通过对查询语句的分析,可以了解查询语句的执行情况.MySQL中,可以使用EXPLAIN语句和DESCRIBE语句来分析查询语句. EXPLAIN语句的基 ...
- C语言:标识符 关键字 保留字 表达式 语句
标识符(Identifier)标识符就是程序员自己起的名字,符号常量(宏).变量名.函数名.宏名.结构体名等,它们都是标识符.遵守规范:C语言规定,标识符只能由字母(A~Z, a~z).数字(0~9) ...
- SQL SERVER 查看所有存储过程或视图里 包含某个关键字的查询语句
SELECT name, type_desc FROM sys.all_sql_modules s INNER JOIN sys.all_objects o ON s.object_id = o.ob ...
- docker 部署netcore 的关键语句
网站容器:docker run -it --name myTestWeb -p 8080:80 -v /mnt/hgfs/my_share/core/website/:/website microso ...
- java基础3 循环语句:While 循环语句、do while 循环语句、 for 循环语句 和 break、continue关键字
一.While循环语句 1.格式 while(条件表达式){ 执行语句: } 2.要点 1,先判断后执行 2,循环次数不定 3,避免死循环 3.举例 题目1:输出0-100之间的所有数 class D ...
- SQL Server中的Merge关键字
本文转载地址:http://www.cnblogs.com/CareySon/archive/2012/03/07/2383690.html 简介 Merge关键字是一个神奇的DML关键字.它在SQL ...
- Delphi 关键字详解[整理于 "橙子" 的帖子]
absolute //它使得你能够创建一个新变量, 并且该变量的起始地址与另一个变量相同. var Str: ]; StrLen: Byte absolute Str; //这个声明指定了变量 ...
随机推荐
- LeetCode :Word Ladder II My Solution
Word Ladder II Total Accepted: 11755 Total Submissions: 102776My Submissions Given two words (start ...
- BZOJ2440(全然平方数)二分+莫比乌斯容斥
题意:全然平方数是指含有平方数因子的数.求第ki个非全然平方数. 解法:比較明显的二分,getsum(int middle)求1-middle有多少个非全然平方数,然后二分.求1-middle的非全然 ...
- linq to sql用partial扩展属性,创建一个部分类(用于多表连接)
1.在窗体中创建dataGridView显示表: using System; using System.Collections.Generic; using System.ComponentModel ...
- 把Orchard部署到Windows Azure Web Sites
很久前就想做个人站点,主要用来记录自己的生活,我喜欢摄影,烘焙…然后又刚刚入皮坑,这些都可以放在网站上展示一下,或许还能为自己带来收入. 然后手上刚好有Azure的试用,于是乎动力就上来了. 以下是部 ...
- 如何隐藏DLL中,导出函数的名称?
一.引言 很多时候,我们写了一个Dll,不希望别人通过DLL查看工具,看到我们的导出函数名称.可以通过以下步骤实现: 1. 在def函数中做如下定义: LIBRARY EXPORTS HideFunc ...
- Centos6 安全防护设置指南
参考博文: Centos 6.4安全防护设置指南 4.使用chattr命令给下列文件加上不可更改的属性 有效防止非法用户进行文件的修改. [root@localhost ~]# chattr +i / ...
- Objective-C 程序设计第四版
1,@class XYPoint; 写在.h文件里,告诉编译器有这类,然后用的时候,其实是在.m文件引入的. 例如.#import “XYPoint.h” 然后在.m文件里就能用XYPoint.h ...
- Windows Phone 8初学者开发—第10部分:数据绑定应用程序和透视应用程序项目模板简介
原文 Windows Phone 8初学者开发—第10部分:数据绑定应用程序和透视应用程序项目模板简介 原文地址: http://channel9.msdn.com/Series/Windows-Ph ...
- 浅谈长尾理论--《Makers》读后感
近期有幸读了一本好书<Makers>,作者是克里斯·安德森.作为3D Robotics和DIY Drones的联合创始人,自然对于正步入的“第三次工业革命”有较为深刻的体会.清晰的逻辑中, ...
- 【Eclipse】Failed to load the JNI shared library
这是因为JDK配置错误所导致的现象. 一般说来,新购笔记本会预装64位的windows系统,而在网上下载软件时,32位会优先出现在页面中(现在来说是这个情况,但我认为未来64位会越来越普及). 如果你 ...