Ant

来源:互联网 发布:淘宝网二手电动车 编辑:程序博客网 时间:2024/06/05 15:53

Ant安装

第一步下载http://ant.apache.org/第二步解压文件介绍bin:批处理文件etc:外部依赖的文件lib:库manual:帮助指南第三步配置环境变量配置Ant前提是java的环境变量必须配置好ANT_HOME = D:\Program Files\apache-ant-1.9.2path = 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.xmlD:\>ant如果构件脚本名称不为build.xml,而是其他的(用mybuild.xml举例)D:\>ant -f mybuild.xml显式执行如果构件脚本名称为build.xmlD:\>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.0Ant-Version: Apache Ant 1.7.0Created-By: 22.1-b02 (Oracle Corporation)对于图形界面程序来说,打成架包是可以直接双击去运行的,要想实现双击运行,必须在清单文件中有Main-Class(包含main()主类的名字),内容如下Manifest-Version: 1.0Ant-Version: Apache Ant 1.7.0Created-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.0Ant-Version: Apache Ant 1.7.0Created-By: 22.1-b02 (Oracle Corporation)Built-By: LwcMain-Class: com.itlwc.HelloWorld

Ant运行

HelloWorld.javapackage 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标签分析packagecvs下具体项目command对这个项目做什么操作dest操作到那里案例<!--pserver连接的方式(默认的)Lwc登陆操作系统的用户名123456登陆的密码127.168.0.1登陆机器的IP地址c:\cvscvs的仓库路径--><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默认格式yyyymmdd20140406TSTAMP默认格式hhmm1603TODAY完整时间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.propertiescreateFile=helloworldbuild.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>
原创粉丝点击