Ant

Ant安装

第一步下载
	http://ant.apache.org/
第二步解压文件介绍
	bin:批处理文件
	etc:外部依赖的文件
	lib:库
	manual:帮助指南
第三步配置环境变量
	配置Ant前提是java的环境变量必须配置好
	ANT_HOME = D:\Program Files\apache-ant-1.9.2
	path = D:\Program Files\apache-ant-1.9.2\bin
第四步测试配置是否成功
	如果在命令行输入ant出现
		Buildfile: build.xml does not exist!
		Build failed
	说明配置成功

设置Ant文档路径(编写Ant提示)

设置Ant运行环境(默认运行环境是JDK的)

Ant简介

Apache Ant是基于Java的生成工具  
    全称是 another neat tool(另一个整洁工具的意思),简写是 ant(蚂蚁的意思)  
Ant是一个名叫build的xml文件
	是通过build.xml来进行构件的
Ant的project标签是根元素,target标签每一项具体的任务

命令行执行Ant

构件脚本为
	<?xml version="1.0" encoding="UTF-8"?>
	<!--先删除后加helloworld文件夹-->
	<project default="second">
		<target name="init">
			<delete dir="helloworld" />
		</target>
		<target name="second" depends="init">
			<mkdir dir="helloworld" />
		</target>
	</project>
隐式执行
	如果构件脚本名称为build.xml
		D:\>ant
	如果构件脚本名称不为build.xml,而是其他的(用mybuild.xml举例)
		D:\>ant -f mybuild.xml
显式执行
	如果构件脚本名称为build.xml
		D:\>ant init second
	如果构件脚本名称不为build.xml,而是其他的(用mybuild.xml举例)
		D:\>ant -f mybuild.xml init second
如果build文件在MyEclipse项目中可以点击build.xml右键选择Run As执行

使用MyEclipse自带插件单个运行Ant


Ant注释/描述

第一种使用description属性
	<target name="init" description="删除文件">
		<delete dir="helloworld" />
	</target>
第二种使用description标签
	<description>删除文件</description>
	<target name="init">
		<delete dir="helloworld" />
	</target>

Ant模式匹配

对目录进行匹配
例如
	src*/*.java
		将匹配带src前缀的任何目录中的所有.java文件
	**/*.java
		目录结构下所有.java文件
	需要注意的是*/和**/是不一样的,一个是当前目录下,一个是所有目录下

Ant拷贝文件

copy标签分析
	file属性		源文件
	tofile属性	目标文件	
拷贝一
	<target name="init">
		<delete dir="build" />
		<mkdir dir="build/src" />
		<copy file="src/com/itlwc/HelloWorld.java" tofile="c:/CopyHelloWorld.java">
		</copy>
	</target>
拷贝二(具有剪切功能,拷贝之后源文件删除)
	<target name="init">
		<delete dir="build" />
		<mkdir dir="build/src" />
		<copy file="src/com/itlwc/HelloWorld.java" tofile="c:/CopyHelloWorld.java">
		</copy>
	</target>
copy标签分析
	todir属性	拷贝到那  
	refid属性	依赖(从那拷贝)
fileset标签分析  
	fileset可以设定一组文件集进行操作,
	dir指明文件集要进行选择的路径,  
	id可以指定这个文件的名称,在使用的时候进行直接引用  
    include表示包含,
    exclude表示排除  
    <fileset id="src.path" dir="src">    
        <!--包括所有目录下的所有文件-->    
        <include name = "**/*.*"/>    
        <!--排除T开头的文件-->    
        <exclude name = "**/T*"/>    
        <!--排除.java文件-->    
        <exclude name = "**/*.java"/>    
    </fileset>
拷贝三(引用内部文件集)
	<target name="init">
		<delete dir="build" />
		<mkdir dir="build/src" />
		<copy todir="build/src">
			<fileset dir="src" includes="**/*.*" />
		</copy>
	</target>
拷贝四(引用外部文件集id)
	<fileset id="src.path" dir="src" includes="**/*.*" />
	<target name="init">
		<delete dir="build" />
		<mkdir dir="build/src" />
		<copy todir="build/src">
			<fileset refid="src.path"></fileset>
		</copy>
	</target>
拷贝五(引用外部文件集id另一种写法)
	<fileset id="src.path" dir="src">  
        <include name = "**/*.*"/>  
    </fileset>  
    <target name="init" depends="init">  
        <delete dir="build" />
		<mkdir dir="build/src" />
        <copy todir="build/src">  
            <fileset refid="src.path"></fileset>  
        </copy>  
    </target>

Ant编译Java文件

javac标签分析
	destdir 编译到那  
   	srcdir 编译的src的路径
编译
	<target name="init">
		<delete dir="build"/>
		<mkdir dir="build/classes"/>
		<javac srcdir="src" destdir="build/classes"></javac>
	</target>
javac任务的重要特点在于,它仅编译那些认为需要编译的文件,
	如果某个类的已经存在,并且对应的源文件没有改变过,不会被重新编译

Ant创建JAR文件

JAR文件能够包含任意类型的文件,比如class文件,XML文件,图片,清单文件等等
jar标签分析
	destfile属性      打包到那  
   	basedir属性       打包那些
打包代码
	<!--打包必须先编译-->
	<target name="init">
		<delete dir="build" />
		<mkdir dir="build/classes" />
		<mkdir dir="build/dist" />
		<javac srcdir="src" destdir="build/classes">
		</javac>
		<jar destfile="build/dist/package.jar" basedir="build/classes">
		</jar>
	</target>
创建JAR时会在JAR中再生成META-INF/MANIFEST.MF文件,文件(清单文件)内容如下
	Manifest-Version: 1.0
	Ant-Version: Apache Ant 1.7.0
	Created-By: 22.1-b02 (Oracle Corporation)
对于图形界面程序来说,打成架包是可以直接双击去运行的,要想实现双击运行,
	必须在清单文件中有Main-Class(包含main()主类的名字),内容如下
		Manifest-Version: 1.0
		Ant-Version: Apache Ant 1.7.0
		Created-By: 22.1-b02 (Oracle Corporation)
		Main-Class: com.itlwc.HelloWorld
打架包时手动配置清单文件
	配置如下
		<!--打包必须先编译-->
		<target name="init">
			<delete dir="build" />
			<mkdir dir="build/classes" />
			<mkdir dir="build/dist" />
			<javac srcdir="src" destdir="build/classes" />
			<jar destfile="build/dist/package.jar" basedir="build/classes">
				<!--指定我们可用的属性-->
				<manifest>
					<!--
						user.name使用自己的名字(不需要自定义Ant内置的属性)
						Ant内置的属性是从Java的属性文件中提取出来的
						user.name表示登陆操作系统的用户名
					-->
					<attribute name="Built-By" value="${user.name}" />
					<attribute name="Main-Class" value="com.itlwc.HelloWorld" />
				</manifest>
			</jar>
		</target>
	生成的清单文件如下
		Manifest-Version: 1.0
		Ant-Version: Apache Ant 1.7.0
		Created-By: 22.1-b02 (Oracle Corporation)
		Built-By: Lwc
		Main-Class: com.itlwc.HelloWorld

Ant运行

HelloWorld.java
	package com.itlwc;
	
	public class HelloWorld {
		public static void main(String[] args) {
			for (String arg : args) {
					System.out.println("hello "+arg);
			}
		}
	}
bulid.xml
	<project default="init">
		<fileset id="src.path" dir="src">
			<include name="**/*.*" />
		</fileset>
		<target name="init">
			<delete dir="build" />
			<mkdir dir="build/classes" />
			<mkdir dir="build/dist" />
			<javac srcdir="src" destdir="build/classes" />
			<jar destfile="build/dist/package.jar" basedir="build/classes">
				<manifest>
					<attribute name="Built-By" value="${user.name}" />
					<attribute name="Main-Class" value="com.itlwc.HelloWorld" />
				</manifest>
			</jar>
			<echo>基于类路径的classname来执行</echo>
			<java classname="com.itlwc.HelloWorld" classpath="build/classes">
				<arg value="张三" />
				<arg value="李四" />
				<arg value="王五" />
			</java>
			<echo>基于jar来执行</echo>
			<java jar="build/dist/package.jar" fork="true">
				<arg value="张三" />
				<arg value="李四" />
				<arg value="王五" />
			</java>
		</target>
	</project>

Ant对CVS的支持

CVS任务的主要属性是cvsRoot,它是对CVS库的完整引用,包括连接方法和用户详细信息
参数如下
	[:method:][
		[user][:password]@
	]hostname[:
		[port]
	]/path/to/repository
提取是CVS任务的默认操作,其他操作可以通过使用command属性来指定,配置如下
cvsRoot标签分析
	package	cvs下具体项目
	command	对这个项目做什么操作
	dest	操作到那里
案例
	<!--
		pserver		连接的方式(默认的)
		Lwc			登陆操作系统的用户名
		123456		登陆的密码
		127.168.0.1	登陆机器的IP地址
		c:\cvs		cvs的仓库路径
	-->
	<target name="init">
		<cvs cvsroot=":pserver:Lwc:123456@127.168.0.1:c:\cvs" 
			package="Ant"
			command="checkout"
			dest="c:\mycvs">
		</cvs>
	</target>

Ant生成时间戳

用来表示时间戳
	时间戳就是生成环境中使用当前时间和日期(一般用在记录生成的时间)
有时候不需要属性,许多情况下使用<tstamp/>就行了
三个属性
	DSTAMP	默认格式yyyymmdd	20140406
	TSTAMP	默认格式hhmm		1603
	TODAY	完整时间			2014年04月06日
案例
	<target name="dist" depends="myCompile">
		<!--获取当前时间,tstamp必须写,DSTAMP才能输出时间-->
		<tstamp></tstamp>
		<!--使用DSTAMP-->
		<jar destfile="build/dist/package-{$DSTAMP}.jar" basedir="build/src"></jar>
	</target>
	生成JAR文件为: package-20140406.jar	

Ant 替换和查找任务

执行文件中的替换和查找
replace标签分析
	file	查找的文件
	token	查找的字符串
	value	新的字符串
	summary	提供详细信息,true或者false,执行的数目
案例
	<target name="init">
		<replace 
			file="src/com/itlwc/HelloWorld.java" 
			token="hello" value="Hello"
			summary="ture">
		</replace>
	</target>

Ant属性

Ant的值一旦被设置不能被改变  
定义属性使用property标签  
    <property name="属性的名字" value="属性的值"/>  
使用方法(直接使用)  
    <!--创建helloworld文件夹-->  
    <project default="init">  
        <property name="createFile" value="helloworld" />  
        <target name="init">  
            <!--这里的${createFile}将会被替换成helloworld-->  
            <mkdir dir="${createFile}" />  
        </target>  
    </project>  
使用方法(嵌套使用)  
    <!--创建helloworldGo文件夹-->  
    <project default="init">  
        <property name="createFile" value="helloworld" />  
        <target name="init">  
            <!--这里的${createFile}Go将会被替换成helloworldGo-->  
            <mkdir dir="${createFile}Go" />  
        </target>  
    </project>
使用属性定义相应路径时,一定使用个location不使用value,
	location属性自动转换为当前系统可以识别的路径(只能处理路径地址)  
    <property name="createFile" location="helloworld/abc"/>             
如果属性太多可以把属性定义在外部properties文件
	build.properties
		createFile=helloworld
	build.xml
		<project default="init">  
		    <property file="build.properties"/>  
		    <target name="init">  
		        <mkdir dir="${createFile}" />  
		    </target>  
		</project>	
特别注意,路径不建议在外部properties文件中定义,此时就不会设置location的值

Ant内置属性

<?xml version="1.0" encoding="UTF-8"?>
<project>
	<!--build.xml路径-->
	<echo>${ant.file}</echo>
	<!--ant路径-->
	<echo>${ant.home}</echo>
	<!--JDK版本-->
	<echo>${ant.java.version}</echo>
	<!--ant库路径-->
	<echo>${ant.library.dir}</echo>
	<!--ant版本号-->
	<echo>${ant.version}</echo>
	<!--把环境变量的参数导入到env这个变量中-->
	<property environment="env" />
	<!--Java路径-->
	<echo>${env.JAVA_HOME}</echo>
</project>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值