ANT1.61常用命令

第一部分 基本結構
<?xml version="1.0" encoding="UTF-8" ?> 
<project name="HelloWorld" default="run" basedir=".">
   <property name="src" value="src" /> 
   <property name="dest" value="classes" /> 
   <property name="jardir" value="resultlib" /> 
   <property name="hello_jar" value="hello.jar" /> 

 <target name="init">
    <mkdir dir="${dest}" /> 
 </target>

 <target name="compile" depends="init">
    <javac srcdir="${src}" destdir="${dest}" /> 
 </target>

 <target name="build" depends="compile">
    <mkdir dir="${jardir}" /> 
  <jar jarfile="${hello_jar}" basedir="${dest}" /> 
 </target>

 <target name="run" depends="build">
    <java classname="com.sharetop.antdemo.HelloWorld" classpath="${hello_jar}" /> 
 </target>
</project>

說明: 標準的XML文檔, 根結點爲project, 前面可以設置公有變量property, project中可含多個target, 每個target中可包括多個task.

------------------------------------

第二部分 應用程序基本結構

目錄 文件
bin 公共的二進制文件, 以及運行腳本
build 臨時創建的文件, 如類文件等
dist 目標輸出文件, 如生成Jar文件等
doc/javadocs 文檔
lib 需要導入的Java包, 即編輯過程中需要的包
src java源文件
web jsp, html等

------------------------------------

第三部分 核心TASK

1. copy
 拷貝單個文件
   <copy file="myfile.txt" tofile="mycopy.txt"/>

 拷貝單個文件到目錄
   <copy file="myfile.txt" todir="../some/other/dir"/>

 拷貝目錄
   <copy todir="../new/dir">
     <fileset dir="src_dir"/>
   </copy>

 拷貝目錄下指定文件(兩種方式均可)
   <copy todir="../dest/dir">
     <fileset dir="src_dir">
       <exclude name="**/*.java"/>
     </fileset>
   </copy>

   <copy todir="../dest/dir">
     <fileset dir="src_dir" excludes="**/*.java"/>
   </copy>

2. copydir
 拷貝目錄
 <copydir src="${src}/resources"
           dest="${dist}"
 />

 拷貝目錄下指定內容
 <copydir src="${src}/resources"
    dest="${dist}"
    includes="**/*.java"
    excludes="**/Test.java"
 />

 <copydir src="${src}/resources"
    dest="${dist}"
    includes="**/*.java"
    excludes="mypackage/test/**"/>

3. copyfile 
 拷貝單個文件
 <copyfile src="test.java" dest="subdir/test.java"/>
 <copyfile src="${src}/index.html" dest="${dist}/help/index.html"/>


4. cvs 
 從CVS服務器得到指定package的項目, 將之下載到dest指定目錄下
 <cvs cvsRoot=":pserver:[email protected]:/home/cvspublic"
         package="ant"
         dest="${ws.dir}"
 />

5. delete
 <delete file="/lib/ant.jar"/>

 <delete dir="lib"/>

 刪除當前目錄和所有子目錄下的bak文件
 <delete>
 <fileset dir="." includes="**/*.bak"/>
 </delete>

 刪除build下所有文件及子目錄, 包括build目錄本身也刪除
 <delete includeEmptyDirs="true">
 <fileset dir="build"/>
 </delete>

 deletes all files and subdirectories of build, including build itself.

6. deltree 
 <deltree dir="dist"/>
 deletes the directory dist, including its files and subdirectories.

 <deltree dir="${dist}"/>
 deletes the directory ${dist}, including its files and subdirectories.

7. ear 
 <ear destfile="${build.dir}/myapp.ear" appxml="${src.dir}/metadata/application.xml">
  <fileset dir="${build.dir}" includes="*.jar,*.war"/>
 </ear>


8. echo
 <echo message="Hello, world"/>
  
 <echo>This is a longer message stretching over
 two lines.
 </echo>
  
 <echo>
 This is a longer message stretching over
 three lines; the first line is a blank
 </echo>
 
 只有當debug模式時才輸出
 <echo message="Deleting drive C:" level="debug"/>

9. exec
 執行某程序
 <property name="browser" location="C:/Programme/Internet Explorer/iexplore.exe"/>
 <property name="file" location="ant/docs/manual/index.html"/>

 <exec executable="${browser}" spawn="true">
     <arg value="${file}"/>
 </exec>

10. import
 <import file="../common-targets.xml" />
 Imports targets from the common-targets.xml file that is in a parent directory.

 <import file="${deploy-platform}.xml" />
 Imports the project defined by the property deploy-platform

11. input
 執行過程中請用戶輸入y/n, 根據輸入做出不同操作
 <input
  message="All data is going to be deleted from DB continue (y/n)?"
  validargs="y,n"
  addproperty="do.delete"
 />
 <condition property="do.abort">
 <equals arg1="n" arg2="${do.delete}"/>
 </condition>
 <fail if="do.abort">Build aborted by user.</fail>

12. jar 
 <jar destfile="${dist}/lib/app.jar" basedir="${build}/classes"/>

 <jar destfile="${dist}/lib/app.jar"
        basedir="${build}/classes"
        excludes="**/Test.class"
 />

 <jar destfile="${dist}/lib/app.jar"
        basedir="${build}/classes"
        includes="mypackage/test/**"
        excludes="**/Test.class"
 />


 <jar destfile="${dist}/lib/app.jar">
     <fileset dir="${build}/classes"
       excludes="**/Test.class"
 />
 <fileset dir="${src}/resources"/>
 </jar>

13. java 
 <java classname="test.Main">
         <arg value="-h"/>
         <classpath>
           <pathelement location="dist/test.jar"/>
           <pathelement path="${java.class.path}"/>
         </classpath>
        </java>

14. javac 
 <javac srcdir="${src}"
   destdir="${build}"
   classpath="xyz.jar"
   debug="on"
 />
 compiles all .java files under the ${src} directory, and stores the .class files in the ${build} directory. The classpath used includes xyz.jar, and compiling with debug information is on.

   <javac srcdir="${src}"
   destdir="${build}"
   fork="true"
   />
 compiles all .java files under the ${src} directory, and stores the .class files in the ${build} directory. This will fork off the javac compiler using the default javac executable.

 <javac srcdir="${src}"
   destdir="${build}"
   fork="java$$javac.exe"
 />
 compiles all .java files under the ${src} directory, and stores the .class files in the ${build} directory. This will fork off the javac compiler, using the executable named java$javac.exe. Note that the $ sign needs to be escaped by a second one.

 <javac srcdir="${src}"
   destdir="${build}"
   includes="mypackage/p1/**,mypackage/p2/**"
   excludes="mypackage/p1/testpackage/**"
   classpath="xyz.jar"
   debug="on"
 />
 compiles .java files under the ${src} directory, and stores the .class files in the ${build} directory. The classpath used includes xyz.jar, and debug information is on. Only files under mypackage/p1 and mypackage/p2 are used. All files in and below the mypackage/p1/testpackage directory are excluded from compilation.

 <javac srcdir="${src}:${src2}"
   destdir="${build}"
   includes="mypackage/p1/**,mypackage/p2/**"
   excludes="mypackage/p1/testpackage/**"
   classpath="xyz.jar"
   debug="on"
 />
 is the same as the previous example, with the addition of a second source path, defined by the property src2. This can also be represented using nested <src> elements as follows:

 <javac destdir="${build}"
   classpath="xyz.jar"
   debug="on">
     <src path="${src}"/>
     <src path="${src2}"/>
     <include name="mypackage/p1/**"/>
     <include name="mypackage/p2/**"/>
     <exclude name="mypackage/p1/testpackage/**"/>
 </javac>
 If you want to run the javac compiler of a different JDK, you should tell Ant, where to find the compiler and which version of JDK you will be using so it can choose the correct command line switches. The following example executes a JDK 1.1 javac in a new process and uses the correct command line switches even when Ant is running in a Java VM of a different version:

 <javac srcdir="${src}"
   destdir="${build}"
   fork="yes"
   executable="/opt/java/jdk1.1/bin/javac"
   compiler="javac1.1"
 />
 指定了版本號

15. javadoc
 <javadoc
    destdir="docs/api"
    author="true"
    version="true"
    use="true"
    windowtitle="Test API">

 <fileset dir="src" defaultexcludes="yes">
 <include name="com/dummy/test/**" />
 <exclude name="com/dummy/test/doc-files/**"/>
 </fileset>

 <doctitle><![CDATA[<h1>Test</h1>]]></doctitle>
 <bottom><![CDATA[<i>Copyright &#169; 2000 Dummy Corp. All Rights Reserved.</i>]]></bottom>
 <tag name="todo" scope="all" description="To do:" />
 <group title="Group 1 Packages" packages="com.dummy.test.a*"/>
 <group title="Group 2 Packages" packages="com.dummy.test.b*:com.dummy.test.c*"/>
 <link offline="true" href="http://java.sun.com/products/jdk/1.2/docs/api/" packagelistLoc="C:/tmp"/>
 <link href="http://developer.java.sun.com/developer/products/xml/docs/api/"/>
 </javadoc>

16. mail 
 <mail mailhost="smtp.myisp.com" mailport="1025" subject="Test build">
   <from address="[email protected]"/>
   <replyto address="[email protected]"/>
   <to address="[email protected]"/>
   <message>The ${buildname} nightly build has completed</message>
   <fileset dir="dist">
     <includes name="**/*.zip"/>
   </fileset>
 </mail>

 Sends an eMail from [email protected] to [email protected] with a subject of Test Build. Replies to this email will go to [email protected]. Any zip files from the dist directory are attached.  The task will attempt to use JavaMail and fall back to UU encoding or no encoding in that order depending on what support classes are available. ${buildname} will be replaced with the buildname property's value.

17. mkdir 
 <mkdir dir="${dist}"/>
 creates a directory ${dist}.

 <mkdir dir="${dist}/lib"/>
 creates a directory ${dist}/lib.

18. move 
 move與copy類似, 不同的是, 不留原稿
 Move a single file (rename a file)
 <move file="file.orig" tofile="file.moved"/>

 Move a single file to a directory
 <move file="file.orig" todir="dir/to/move/to"/>

 Move a directory to a new directory
 <move todir="new/dir/to/move/to">
     <fileset dir="src/dir"/>
 </move>

 Move a set of files to a new directory
 <move todir="some/new/dir">
     <fileset dir="my/src/dir">
       <include name="**/*.jar"/>
       <exclude name="**/ant.jar"/>
     </fileset>
 </move>

 Append ".bak" to the names of all files in a directory.
 <move todir="my/src/dir" includeemptydirs="false">
     <fileset dir="my/src/dir">
       <exclude name="**/*.bak"/>
     </fileset>
     <mapper type="glob" from="*" to="*.bak"/>
 </move>

19. property 
 <property name="foo.dist" value="dist"/>
 sets the property foo.dist to the value "dist".

 <property file="foo.properties"/>
 reads a set of properties from a file called "foo.properties".
 從文件中獲取, 把屬性做成一個單獨的文件

 <property url="http://www.mysite.com/bla/props/foo.properties"/>
 reads a set of properties from the address "http://www.mysite.com/bla/props/foo.properties".

20. rename 
 <rename src="foo.jar" dest="${name}-${version}.jar"/>

21. replace
 <replace 
  file="configure.sh"
  value="defaultvalue"
  propertyFile="source/name.properties">
 <replacefilter 
  token="@token1@"/>
 <replacefilter 
  token="@token2@" 
 value="value2"/>
 <replacefilter 
  token="@token3@" 
 property="property.key"/>
 </replace>

 In file configure.sh, replace all instances of "@token1@" with "defaultvalue", all instances of "@token2@" with "value2", and all instances of "@token3@" with the value of the property "property.key", as it appears in property file src/name.properties.

22. sleep 
 <sleep milliseconds="10"/>
 Sleep for about 10 mS. 

 <sleep seconds="2"/>
 Sleep for about 2 seconds. 

 <sleep hours="1" minutes="-59" seconds="-58"/>
 Sleep for one hour less 59:58, or two seconds again 

 <sleep/>
 Sleep for no time at all. This may yield the CPU time to another thread or process. 

23. sql
 <sql
     driver="org.database.jdbcDriver"
     url="jdbc:database-url"
     userid="sa"
     password="pass"
     src="data.sql"
 />

 Connects to the database given in url as the sa user using the org.database.jdbcDriver and executes the SQL statements contained within the file data.sql

 <sql
     driver="org.database.jdbcDriver"
     url="jdbc:database-url"
     userid="sa"
     password="pass"
     >
 insert  into table some_table values(1,2,3,4);
 truncate table some_other_table;
 </sql>

 <sql
     driver="org.database.jdbcDriver"
     url="jdbc:database-url"
     userid="sa"
     password="pass"
     ><![CDATA[

 update some_table set column1 = column1 + 1 where column2 < 42;

 ]]></sql>

 <sql
     driver="org.database.jdbcDriver"
     url="jdbc:database-url"
     userid="sa"
     password="pass"
     src="data.sql"
     print="yes"
     output="outputfile.txt"
     >
 <classpath>
  <pathelement location="/some/jdbc.jar"/>
 </classpath>
 </sql>

24. subant
 <subant target="compile" genericantfile="/opt/project/build1.xml">
             <dirset dir="." includes="projects*"/>
        </subant>

 <project name="subant" default="subant1">
        <property name="build.dir" value="subant.build"/>
        <target name="subant1">
            <subant target="">
              <property name="build.dir" value="subant1.build"/>
              <property name="not.overloaded" value="not.overloaded"/>
              <fileset dir="." includes="*/build.xml"/>
            </subant>
        </target>
        </project>

25. unjar/untar/unwar/unzip 
 <unzip src="${tomcat_src}/tools-src.zip" dest="${tools.home}"/>

 <gunzip src="tools.tar.gz"/>
 <untar src="tools.tar" dest="${tools.home}"/> 


 <unzip src="${tomcat_src}/tools-src.zip"
        dest="${tools.home}">
     <patternset>
  <include name="**/*.java"/>
  <exclude name="**/Test*.java"/>
     </patternset>
 </unzip>

 

 <unzip dest="${tools.home}">
     <patternset>
  <include name="**/*.java"/>
  <exclude name="**/Test*.java"/>
     </patternset>
     <fileset dir=".">
  <include name="**/*.zip"/>
  <exclude name="**/tmp*.zip"/>
     </fileset>
 </unzip>

26. war 
 
 Assume the following structure in the project's base directory:

 thirdparty/libs/jdbc1.jar
 thirdparty/libs/jdbc2.jar
 build/main/com/myco/myapp/Servlet.class
 src/metadata/myapp.xml
 src/html/myapp/index.html
 src/jsp/myapp/front.jsp
 src/graphics/images/gifs/small/logo.gif
 src/graphics/images/gifs/large/logo.gif

 then the war file myapp.war created with 

 <war destfile="myapp.war" webxml="src/metadata/myapp.xml">
   <fileset dir="src/html/myapp"/>
   <fileset dir="src/jsp/myapp"/>
   <lib dir="thirdparty/libs">
     <exclude name="jdbc1.jar"/>
   </lib>
   <classes dir="build/main"/>
   <zipfileset dir="src/graphics/images/gifs" 
        prefix="images"/>
 </war>

 will consist of 
 WEB-INF/web.xml
 WEB-INF/lib/jdbc2.jar
 WEB-INF/classes/com/myco/myapp/Servlet.class
 META-INF/MANIFEST.MF
 index.html
 front.jsp
 images/small/logo.gif
 images/large/logo.gif
 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章