您的位置:首页 > 其它

Ant使用

2015-08-28 09:33 190 查看
详细可参考:http://ant.apache.org/manual/Tasks/
http://ant.apache.org/manual/index.html
说明:xml很多的元素的写法均可用属性或是子元素来实现

Ant

Ant 是一个构件工具,可以实现项目的自动构件和部署,其构件文件(一般默认是build.xml,也可以用命令进行指定其他的xml文件)是基于XML编写的。

其常用基本功能有:新建文件夹,移动文件夹,删除文件夹,复制文件夹,主要是用于进行Java项目的部署,对Java项目进行编译,运行,打包等工具,还可以与Junit结合进行单元测试。

因为Ant是基于XML的,其主要的元素有project,target,property,path, pathelement,fileset,junit.

project:是Ant构件文件的根元素,Ant构件文件至少包含一个project元素,每个project下面包含多个target元素;主要的属性有name(指定元素名称), default(指定默认执行的target名称), basedir(指定其路径的位置,默认为构件文件的所在目录)

target:是Ant的基本执行单元,包含一个或多个具体的任务,多个target可以互相依赖(一般这也是必要的),属性主要有name,depends,if,unlesss,description

property:可心看作是参数的定义,主要的属性有name,value(指定property的值), location(使property(预)指向一个文件(夹))

path,pathelement,fielset均与路径相关,路径字符串中用“;”或“:”表示分隔;path元素一般期待看到的是一个路径,而fileset则期待看到一个文件集合;path可以用内嵌的pathelement元素来指定若干的位置,pathelemet元素有两个属性,location可以声明一个路径,而path可以声明多个路径用“:”或“;”分开; fileset可以内嵌入path中,用于指定特定的文件;path的使用方式主要有id声明然后refid引用

path例子:

<path id="classpath">
<fileset dir="lib/optional" includes="*.jar"/>
</path>

<path id="tests-classpath">
<pathelement location="${build.classes}"/>
<path refid="classpath"/>
</path>


delete:属性有dir, file;

例子如下:

(1)删除单个文件的实例:

<delete file="ant.jar"/>

这个例子的作用是删除基目录下的ant.jar文件。

(2)删除目录及其下文件的实例:

<delete dir="lib"/>

这个例子的作用是删除lib目录,包括这个目录的所有子目录及文件,可以通过include或exclude类型指定删除的部分文件,而不是目录下的所有文件。
<delete dir="lib" include="*.class">

或者用fileset
<delete>
  <fileset dir="." include="*.class"/>
</delete>


引用外部Ant文件:http://blog.csdn.net/samlei/article/details/4231496

例子:

<?xml version="1.0"?>
<project default="compile" name="Plugin Project" basedir=".">
<description>My plugin</description>

<property name="srcDir" location="."/>
<property name="runDir" location="./../.." />

<path id="ij">
<pathelement path=".:./../../ij.jar"/>
</path>

<target name="init">
</target>

<target name="compile" depends="init">
<javac srcdir="${srcDir}" destdir="${srcDir}">
<classpath>
<path refid="ij" />
</classpath>
</javac>
</target>

<target name="run" description="run the ImageJ with the external build.xml">
<ant antfile="build.xml"
dir="${runDir}"
inheritall="true"
target="run">
</ant>
</target>

<target name="clean">
<delete>
<fileset dir="." includes="*.class"/>
</delete>
</target>
</project>


Ant基本使用例子:

<?xml version="1.0"?>
<project name="study" default="compile" basedir=".">
<property name="srcDir" value="firstProject"></property>
<property name="destDir" value="copyfile"></property>

<target name="init">
<mkdir dir="${destDir}"/>
<mkdir dir="newdir" />
<copy todir="${destDir}">
<fileset dir="${srcDir}"/>
</copy>
</target>

<!--输出信息(日志与监控器)有file,append属性-->
<target name="echo" depends="init">
<echo message="Hello,Amigo" />
</target>

<target name="compile" depends="init">
</target>

<target name="move" depends="init">
<move todir="newdir">
<fileset dir="${srcDir}"/>
</move>
</target>

<target name="clean" depends="init">
<delete file=""/>
<delete dir="${destDir}"/>
</target>
</project>


Ant与Java:

<?xml version="1.0"?>
<project default="run" name="Project Argon" basedir=".">
<description>A simple Java project</description>

<property name="srcDir" location="."/>
<property name="buildDir" location="build"/>
<property name="distDir" location="dist"/>
<property name="main-class" value="Runners.RunnerDemo" />
<property name="main-class1" value="Runners.RunnerPart1" />
<property name="main-class2" value="Runners.RunnerPart2" />

<target name="init">
<tstamp/>
<mkdir dir="${buildDir}"/>
<mkdir dir="${distDir}"/>
</target>
<target name="compile" depends="init">
<javac srcdir="${srcDir}" destdir="${buildDir}"/>
</target>

<target name="run" depends="compile">
<java fork="true" classpath="${buildDir}" classname="${main-class}" />
</target>

<target name="run1" depends="compile">
<java fork="true" classpath="${buildDir}" classname="${main-class1}" />
</target>

<target name="run2" depends="compile">
<java fork="true" classpath="${buildDir}" classname="${main-class2}" />
</target>

<target name="dist" depends="compile">
<jar destfile="${distDir}/package-${DSTAMP}.jar" basedir="${buildDir}">
<manifest>
<attribute name="Built-By" value="${user.name}"/>
<attribute name="Main-Class" value="package.Main"/>
</manifest>
</jar>
<jar destfile="${distDir}/package-src-${DSTAMP}.jar" basedir="${srcDir}"/>
</target>

<target name="clean">
<delete dir="${buildDir}"/>
<delete dir="${distDir}"/>
<delete file="trash"/>
<delete file="result.txt"/>
</target>
</project>


ant与junit结合:

<?xml version="1.0"?>
<project default="junit" name="Project Argon" basedir=".">
<description>A simple Java project</description>

<property name="srcDir" location="."/>
<property name="buildDir" location="build"/>
<property name="distDir" location="dist"/>
<property name="reportsDir" Location="report"/>

<path id="tcls">
<pathelement path="./build" />
<pathelement path="."/>
<pathelement path="./junit-4.9.jar" />
<pathelement path="./../ImageReader/ImageReader.jar" />
</path>

<target name="init">
<tstamp/>
<mkdir dir="${buildDir}"/>
<mkdir dir="${distDir}"/>
<mkdir dir="${reportsDir}" />
</target>
<target name="compile" depends="init">
<javac classpath=".:./../ImageReader/ImageReader.jar:./junit-4.9.jar" srcdir="${srcDir}" destdir="${buildDir}"/>
</target>

<target name="junit" depends="compile">
<junit printsummary="yes">
<classpath>
<path refid="tcls"/>
</classpath>
<formatter type="xml" usefile="true"/>
<batchtest fork="yes" todir="${reportsDir}">
<fileset dir="." includes="*Test.java" />
</batchtest>
</junit>

<junitreport todir="${reportsDir}">
<fileset dir="${reportsDir}">
<include name="TEST-*.xml"/>
</fileset>
<report format="frames" todir="${reportsDir}/html"/>
</junitreport>
</target>

<target name="dist" depends="compile">
<jar destfile="${distDir}/package-${DSTAMP}.jar" basedir="${buildDir}">
<manifest>
<attribute name="Built-By" value="${user.name}"/>
<attribute name="Main-Class" value="package.Main"/>
</manifest>
</jar>
<jar destfile="${distDir}/package-src-${DSTAMP}.jar" basedir="${srcDir}"/>
</target>

<target name="clean">
<delete dir="${buildDir}"/>
<delete dir="${distDir}"/>
<delete dir="${reportsDir}"/>
</target>
</project>


ant与jar结合(推荐使用)

<?xml version="1.0" encoding="UTF-8"?>
<project default="run" name="Project" basedir=".">
<description>A simple Java project</description>

<!-- 定义全局属性,使用location属性提供对不同平台的支持 -->
<property name="srcDir" location="."/>
<property name="buildDir" location="build" />
<property name="distDir" location="dist" />

<!-- 定义可运行主类 -->
<property name="main-class" value="process.algorithms.Ch1Introduction" />

<!-- 设置classpath -->
<path id="rt">
<pathelement path="./../rt.jar" />
</path>

<path id="mainclass">
<pathelement path="process/algorithms" />
<pathelement path="./../rt.jar" />
</path>

<!-- 初始化工程结构 -->
<target name="init">
<mkdir dir="${buildDir}" />
<mkdir dir="${distDir}" />
</target>

<!-- 编译工程 -->
<target name="compile" depends="init">
<javac srcdir="${srcDir}" destdir="${buildDir}">
<classpath>
<path refid="rt" />
</classpath>
</javac>
</target>

<!-- 打包工程 -->
<target name="package" depends="compile" description="">
<jar destfile="${distDir}/${ant.project.name}.jar" basedir="${buildDir}">
<manifest>
<!-- 设置jar运行时的可运行主类 -->
<attribute name="Main-Class" value="${main-class}"/>
<attribute name="Built-By" value="Harrison Wang"/>
</manifest>
</jar>
</target>

<!-- 运行jar -->
<target name="run" depends="package">
<java jar="${distDir}/${ant.project.name}.jar" fork="true"/>
</target>

<!-- 清理工程 -->
<target name="clean">
    <!--
<delete>
<fileset dir="." includes="*.class"/>
</delete>
    -->
<delete dir="${buildDir}" />
<delete dir="${distDir}" />
</target>

</project>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: