Ant学习报告

Ant生成工具

Ant是适用于JAVA项目的生成工具,类似于CC++项目中的make,以下是我学习过程中的一点笔记


target

target指定项目规定的顺序。
例:

<target name="init" />
<target name="preprocess" depends="init"/>  
<target name="compile" depends="init, preprocess"/>  
<target name="package" depends="compile"/> 

depends指定在到达当前target的依赖,即必须先完成depends指定的target

编译

例:

<javac srcdir="src" destdir="dest"/>

这个标签寻找src目录中以.java为扩展名的所有文件,并对它们调用javac编译器,将生成的类文件放到dest中。
其他参数:

  • classpath:等价于javac-classpath选项
  • debug=“true”:指示编译器应该带调试信息编译源文件

压缩打包

例:

<jar destfile="package.jar" basedir="classes"/>

创建一个名为package.jarJAR文件,并把classes目录的所有文件添加到其中。(JAR 文件能够包含任意类型的文件,而不只是类文件)。此处没有指定清单文件,因此 Ant 将提供一个基本的清单文件。
同理,创建zip压缩文件如下:

<zip destfile="output.zip" basedir="output"/>

解压缩

<unzip src="output.tar.gz" dest="extractDir"/>

清单文件

例:

<jar destfile="package.jar" basedir="classes">  
    <manifest>  
        <attribute name="Built-By" value="${user.name}"/>  
        <attribute name="Main-class" value="package.Main"/>  
    </manifest>  
</jar>  

manifest 属性允许指定一个用作该 JAR 文件的清单的文件。 清单文件的内容还可以使用 manifest 任务在生成文件中指定。这个任务能够像文件系统写入一个清单文件,或者能够实际嵌套在 jar 之内,以便一次性地创建清单文件和 JAR 文件

完整ANT例子

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

        <property name="srcDir" location="src"/>  
        <property name="buildDir" location="build"/>  
        <property name="distDir" location="dist"/>  

        <target name="init">  
           <tstamp/>  
           <mkdir dir="${buildDir}"/>  
           <mkdir dir="${distDir}"/>  
        </target>  
        <target name="compile" depends="init">  
           <javac srcdir="${srcDir}" destdir="${buildDir}"/>  
        </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}"/>
        </target>  
    </project>  

文件操作

添加目录
<mkdir dir="archive/metals/zinc"/>
删除目录
<delete dir="archive/metals/zinc"/>
复制
<copy file="src/Test.java" tofile="src/TestCopy.java"/>
重命名
<move file="src/Test.java" tofile="src/TestCopy.java"/>
文件复制或移动到另一个目录
<copy file="src/Test.java" todir="archive"/>
<move file="src/Test.java" todir="archive"/>

替换

例:

<replace file="input.txt" token="old" value="new"/>

替换操作将在文件本身之内的适当位置进行。为了提供更详细的输出,可把 summary 属性设置为 true。这将导致该任务输出找到和替换的标记字符串实例的数目

模式匹配

* 匹配零个或多个字符
?匹配一个字符
file替换成fileset即可使用模式匹配
例:

    <copy todir="archive">  
      <fileset dir="src">  
        <include name="*.java"/>  
      </fileset>  
    </copy>  

fileset 默认情况下包含指定 src 目录下的所有文件,因此为了仅选择 .java 文件,我们对模式使用一个 include 元素。类似地,我们可以对另一个模式添加一个 exclude 元素,从而潜在地排除include指定的匹配项。 甚至可以指定多个includeexclude 元素; 这样将得到一组文件和目录,它们包含 include 模式的所有匹配项的并集,但排除了 exclude 模式的所有匹配项

猜你喜欢

转载自blog.csdn.net/huangbx_tx/article/details/79888409
今日推荐