Ant使用

详细可参考: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>

 

posted @ 2015-08-28 09:33  Kinthon  阅读(249)  评论(0编辑  收藏  举报