ant 用法

 

ant 工具build.xml说明.

1.定义xml版本,编码
<?xml version="1.0" encoding="big5">

2.定义整个工程
  2.1 <project>......</project>
    例如:<project name="projectA" default="clean" basedir="." >
     定义了工程名,默认方式为清除,如清楚某些文件,basedir为当前目录.
   
   2.2 设定全局变量 如: <property name="date" value="2007.03.22">
       这样下面的可以直接调用变量date.
       设定全局变量有许多方式:如<property name="whereAreYou" location="here">
       这个就是设定路径.
       $(build) :build.xml的根目录

   2.3定义文件编译所需要的jar档. 
      <path id="1">
         <fileset dir="路径" includes="*.jar"/>
      </path>
      
3.定义任务
   3.1 <target name="job1" description="first job">
   name:任务名称
   description:描述
   任务中描述你需要做的事情.
   如编译源文件:
   <javac srcdir="源文件路径" destdir="目的路径">
   <classpath refid="classpath">:重新设定classpath.
   
   任务可以定义多个.

 fileset文件集
    fileset表示了一套文件的集合,通常定义为project-level,ANT的task可以通过显式(explicit)的方式来引用或者直接嵌套fileset,如果是直接嵌套,这个时候fileset是task-level的,很多ANT的task都支持隐式(implicit)的fileset,也就是说这些TASK支持fileset的所有属性和嵌套的子元素,和filelist不同的是fileset所表示的文件必须存在。Fileset可以定义为target-level的,并通过他们的id来引用。
fileset支持以下常用的属性(casesensitive,defaultexcludes请查阅官方文档):
dir?必须指定,用于指定文件所在的目录
excludes?可选,用于指定在dir指定的目录下那些不应该包括进来的文件,内容是逗号分割的文件模式(file?pattern)。
excludesfile?跟excludes类似,区别是只能包括一个模式,通常情况下我习惯使用excludes,因为excludes也包括了excludesfile的功能
includes?可选,用于指定在dir指定的目录下那些需要包括进来的文件,内容是逗号分割的文件模式(file?pattern)。
includesfile?跟includes类似,区别是只能包括一个模式,通常情况下我习惯使用includes,因为includes也包括了includesfile的功能

  

使用Ant可以輕易的解決您設定CLASSPATH的問題,您可以使用<path>來設定路徑參考,使用<pathelement>來指定目錄或jar檔案,例如:

<path id="1">
    <pathelement location="."/>
    <pathelement location="./lib/junit.jar"/>
</path>


上面的例子也可以使用分號設定一系列位置,設定:
<path id="1">
    <pathelement location=".;./lib/junit.jar"/>
</path> 

您也可以使用<fileset>來指定某個目錄下的檔案,例如:
<path id="2">
    <fileset dir="lib">
        <include name="**/*.jar"/>
    </fileset>
</path>
<include>或<exclude>標籤用來包括或排除檔案(或是可以使用includes、excludes屬性),可以在上面使用表示式來比對,*表示零個或多個符合,?表示符合一個字元。

之後在進行<javac>任務時,您可以如下參考之前設定的路徑:
<javac srcdir="./src" destdir="./classes">
    <classpathrefid="1"/>
</javac> 
 您也可以直接在進行<javac>任務時指定classpath,例如:
<javac srcdir="./src" destdir="./classes">
    <classpath refid="1">
        <pathelement location="."/>
        <pathelement location="./lib/junit.jar"/>
    </classpath>
</javac>
 

 

 【【【【【【【【【【【【【【【【【【【【【【【【【【【【【【【【【【【【【【【【【【【【【【【【【【【【【【【【【【【【【

Author: ytfei
Date: 2010-12-24 12:25:48
原创文章,转载请注明出处!http://blog.romebuilder.com/2010/12/259/

总结一下Ant的常用target。

1.概念说明

在使用ant进行编译或者打包运行时,一定会用到path, classpath等标签。这两个标签功能基本相似,很容易混淆。<path></path>和<classpath></classpath>标签中,都可以使用fileset, dirset, pathelement等子标签来指明jar/zip, classes目录等。它们之间的区别如下:

1.<path></path>可以独立定义,并赋予id供其它<path>或<classpath>引用。<classpath></classpath>不能独立定义,但可以通过ID引用<path>。classpath主要用于编译和运行时,指定具体的类路径。path则类似于一个的路径变量。

2.在<path>和<classpath>标签中都可以使用<pathelement>子标签来指明要包含的类文件目录和jar/zip文件。<pathelement>有两个属性:location, path,这两个属性在一个pathelement标签中只能出现一个。它们的区别为:location是用于指明一个包含类文件的目录,或者一个jar/zip文件(注意:重点强调是一个!);而path则能指定多个目录或jar/zip文件,多个目录或jar/zip文件之间用":",或";"(英文冒号或者分号)分隔。如下:

<path id="compile.cp">
<pathelement location="${lib}/a.jar"/>
<pathelement path="${lib}/b.jar;${lib}/c.jar"/>
</path>

<path id="run.cp">
<path refid="compile.cp"/>
<pathelement location="${build.dir}" />
</path>

2.配置文件

下面是我的一个用例配置:
——————————————————————————–

<?xml version="1.0" encoding="UTF-8"?>
<project default="compile" name="romebuilder">
    <property name="base.dir" value="."/>
    <property name="build.dir" value="./build/classes" />
    <property name="dist.dir" value="./build/dist" />
   
    <property name="src.dir" value="./java" />
    <property name="resource.dir" value="${src.dir}" />
   
    <property name="jar.file" value="${dist.dir}/romebuilder.jar" />
   
    <path id="compile.cp">
        <fileset dir="${base.dir}/lib">
            <include name="**/*.jar"/>
        </fileset>
    </path>
   
    <path id="run.cp">
        <path refid="compile.cp" />
        <pathelement location="${build.dir}"/>
    </path>
   
    <target name="init" description="–> init project">
        <mkdir dir="${dist.dir}"/>
        <mkdir dir="${build.dir}"/>
    </target>
   
    <target name="compile" description="–> compile" depends="init">
        <javac encoding="UTF-8" srcdir="${src.dir}" destdir="${build.dir}" includeantruntime="false"
            classpathref="compile.cp" />
    </target>
   
    <target name="dist" description="–> jar" depends="compile">
        <!– <jar basedir="${build.dir}" destfile="${dist.dir}/romebuilder.jar"></jar> –>
        <jar destfile="${jar.file}">
            <fileset dir="${build.dir}">
                <include name="**/*.class" />
            </fileset>
            <fileset dir="${resource.dir}">
                <include name="**/*.properties" />
                <include name="**/*.xml" />
            </fileset>
           
            <manifest>
                <!– Who is building this jar? –>
                <attribute name="Built-By" value="ytfei"/><!– ${user.name} –>
                <!– Information about the program itself –>
                <attribute name="Implementation-Vendor" value="RomeBuilder inc."/>
                <attribute name="Implementation-Title" value="romebuilder"/>
                <attribute name="Implementation-Version" value="1.0.Alpha"/>

                <attribute name="Main-Class" value="com.romebuilder.Main"/>

                <!– details
                <section name="common/MyClass.class">
                    <attribute name="Sealed" value="false"/>
                </section>–>
            </manifest>
           
        </jar>
    </target>
   
    <target name="run" description="–> run" depends="compile,dist">
        <!–<java jar="${jar.file}"
            fork="true" failonerror="true">
            <classpath>
                <pathelement location="${jar.file}"/>
                <path refid="run.cp"/>
            </classpath>
        </java>–>

        <java classname="com.romebuilder.Main"
            fork="true" failonerror="true">
            <classpath>
                <path refid="run.cp"/>
            </classpath>
        </java>       
       
    </target>
   
    <target name="clean" description="–> clean project">
        <delete dir="${build.dir}" />
        <delete dir="${dist.dir}" />
    </target>
</project>

 

阅读更多
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭