ant 工具build.xml说明.
1.定义xml版本,编码
<?xml version="1.0" encoding="big5">
2.定义整个工程
3.定义任务
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>
上面的例子也可以使用分號設定一系列位置,設定:
<path id="1">
</path>
您也可以使用<fileset>來指定某個目錄下的檔案,例如:
<path id="2">
</path>
<include>或<exclude>標籤用來包括或排除檔案(或是可以使用includes、excludes屬性),可以在上面使用表示式來比對,*表示零個或多個符合,?表示符合一個字元。
之後在進行<javac>任務時,您可以如下參考之前設定的路徑:
<javac srcdir="./src" destdir="./classes">
</javac>
<javac srcdir="./src" destdir="./classes">
</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" failοnerrοr="true">
<classpath>
<pathelement location="${jar.file}"/>
<path refid="run.cp"/>
</classpath>
</java>–>
<java classname="com.romebuilder.Main"
fork="true" failοnerrοr="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>