ant使用入门

来源:互联网 发布:php 获取系统信息 编辑:程序博客网 时间:2024/06/04 19:37

1.下载,配置环境变量,添加ANT_HOME,并将ANT_HOME\bin添加到path路径中,进入cmd输入ant -version回显成功说明安装成功;

2.Ant的关键元素project、target、property和task

1.       project元素

project元素是Ant构件文件的根元素,Ant构件文件至少应该包含一个project元素,否则会发生错误。在每个project元素下,可包含多个target元素。接下来向读者展示一下project元素的各属性。

1)name属性

用于指定project元素的名称。

2)default属性

用于指定project默认执行时所执行的target的名称。

3)basedir属性

用于指定基路径的位置。该属性没有指定时,使用Ant的构件文件的附目录作为基准目录。

2.       target元素

它为Ant的基本执行单元,它可以包含一个或多个具体的任务。多个target可以存在相互依赖关系。它有如下属性:

1)name属性

指定target元素的名称,这个属性在一个project元素中是唯一的。我们可以通过指定target元素的名称来指定某个target。

2)depends属性

用于描述target之间的依赖关系,若与多个target存在依赖关系时,需要以“,”间隔。Ant会依照depends属性中target出现的顺序依次执行每个target。被依赖的target会先执行。

3)if属性

用于验证指定的属性是否存在,若不存在,所在target将不会被执行。

4)unless属性

该属性的功能与if属性的功能正好相反,它也用于验证指定的属性是否存在,若不存在,所在target将会被执行。

5)description属性

该属性是关于target功能的简短描述和说明。

3.       property元素

该元素可看作参量或者参数的定义,project的属性可以通过property元素来设 定,也可在Ant之外设定。若要在外部引入某文件,例如build.properties文件,可以通过如下内容将其引入:<property file=” build.properties”/>

property元素可用作task的属性值。在task中是通过将属性名放在“${”和“}”之间,并放在task属性值的位置来实现的。

Ant提供了一些内置的属性,它能得到的系统属性的列表与Java文档中System.getPropertis()方法得到的属性一致,这些系统属性可参考sun网站的说明。

同时,Ant还提供了一些它自己的内置属性,如下:

basedir:project基目录的绝对路径,该属性在讲解project元素时有详细说明,不再赘述;

ant.file:buildfile的绝对路径,如上面的各例子中,ant.file的值为E:"build.xml;

ant.version:Ant的版本,在本文中,值为1.7.0;

ant.project.name:当前指定的project的名字,即前文说到的project的name属性的值;

ant.java.version:Ant检测到的JDK的版本,在上例运行结果中可看到为1.5。

3. ant 常用任务

在Ant工具中每一个任务封装了具体要执行的功能,是Ant工具的基本执行单位。在本小节中,主要引导读者来看下Ant的常用任务及其使用举例。

1.       copy任务

该任务主要用来对文件和目录的复制功能。举例如下:

Eg1.复制单个文件:<copy file="file.txt" tofile="copy.txt"/>

Eg2.对文件目录进行复制:

   <copy todir="../newdir/dest_dir">

            <fileset dir="src_dir"/>

</copy>

Eg3. 将文件复制到另外的目录:

<copy file="file.txt" todir="../other/dir"/>

2.       delete任务

对文件或目录进行删除,举例如下:

Eg1. 删除某个文件:<delete file="photo/amigo.jpg"/>

Eg2. 删除某个目录:<delete dir="photo"/>

Eg3. 删除所有的备份目录或空目录:

        <delete includeEmptyDirs="true">

               <fileset dir="." includes="**/*.bak"/>

        </delete>

3.       mkdir任务

创建目录。eg:<mkdir dir="build"/>

4.       move任务

移动文件或目录,举例如下:

Eg1. 移动单个文件:<move file="fromfile" tofile=”tofile”/>

Eg2. 移动单个文件到另一个目录:<move file="fromfile" todir=”movedir”/>

Eg3. 移动某个目录到另一个目录:

        <move todir="newdir">

               <fileset dir="olddir"/>

        </move>

5.       echo任务

该任务的作用是根据日志或监控器的级别输出信息。它包括message、file、append和level四个属性,举例如下:

<echo message="Hello,Amigo" file="logs/system.log" append="true">

学习目标:basedir
<?xml version="1.0"?>
<project name="projectStudy" default="sayBaseDir" basedir="D:\myec">
       <target name="sayBaseDir" description="打印提示信息">
              <echo message="The base dir is: ${basedir}"/>
       </target>
</project>
  
  
学习目标:创建目录
<?xml version="1.0"?>
<project name="propertyStudy" default="mkdir" description="创建目录">
    <target name="mkdir">
        <mkdir dir="mkdirTest"/>
    </target>
</project>
 
 
 
学习目标:property变量
<?xml version="1.0"?>
<project name="propertyStudy" default="example">
    <property name="name" value="amigo"/>
    <property name="age" value="25"/>
     
    <target name="example">
        <echo message="name: ${name}, age: ${age}"/>
    </target>
</project>
 
 
学习目标:拷贝单个文件 与 文件夹
<?xml version="1.0"?>
<project name="propertyStudy" default="copydir">
    <target name="copyfile" description="拷贝文件">
        <copy file="antStudy.txt" tofile="copy.txt"/>
    </target>
     
    <target name="copydir" description="拷贝目录">
        <copy todir="../AntProject/src_copy">
              <fileset dir="src"/>
         </copy>
    </target>
</project>
 
 
学习目标:删除单个文件 与 文件夹 / 删除备份目录及空目录
<?xml version="1.0"?>
<project name="propertyStudy" default="deldir">
    <target name="delfile" description="删除文件">
        <delete file="src_copy/com/cyjch/test/AntTest.java" />
    </target>
 
    <target name="deldir" description="删除目录">
        <delete dir="../AntProject/src_copy" />
    </target>
 
    <target name="delBakAndEmpty" description="删除空目录及备份目录">
        <delete includeEmptyDirs="true">
            <fileset dir="." includes="**/*.bak" />
        </delete>
    </target>
</project>
 
 
学习目标:移动文件、目录
<?xml version="1.0"?>
<project name="propertyStudy" default="moveDirToDir">
    <target name="moveFile" description="移动文件">
        <move file="mkdirTest/cantStudy.txt" tofile="cantStudy.txt"/>
    </target>
 
    <target name="moveFileToDir" description="移动目录">
        <move file="cantStudy.txt" todir="mkdirTest"/>
    </target>
 
    <target name="moveDirToDir" description="移动目录到目录,也可做为目录更名">
        <move todir="mkdirTestNew">
            <fileset dir="mkdirTest"/>
        </move>
    </target>
</project>
 
 
 
学习目标:编译
<?xml version="1.0"?>
<project name="javacTest" default="compile" basedir=".">
    <target name="clean" description="删除编译后产生的目录及文件">
        <delete dir="build" />
    </target>
 
    <target name="compile" depends="clean" description="编译源文件">
        <mkdir dir="build/classes" />
        <javac srcdir="src" destdir="build/classes" />
    </target>
</project>
 
 
 
学习目标:编译并运行JAVA程序
<?xml version="1.0"?>
<project name="javaTest" default="run" basedir=".">
    <target name="clean" description="清除目录">
        <delete dir="build" />
    </target>
 
    <target name="compile" depends="clean" description="编译">
        <mkdir dir="build/classes" />
        <javac srcdir="src" destdir="build/classes" />
    </target>
 
    <target name="run" depends="compile" description="运行">
        <java classname="AntTest">
            <classpath>
                <pathelement path="build/classes" />
            </classpath>
        </java>
    </target>
</project>
 
 
 
学习目标:打JAR包
<?xml version="1.0"?>
<project name="javaTest" default="jar" basedir=".">
    <target name="jar" description="打JAR包">
        <jar destfile="helloworld.jar" basedir="build/classes">
            <manifest>
                <attribute name="Main-class" value="HelloWorld" />
            </manifest>
        </jar>
    </target>
</project>
 
 
学习目标:打WAR包
 
 
 
 
学习目标:mkdir srcdir destdir delete war jar
<?xml version="1.0"?>
<!--默认为打包操作-->
<project name="structured" default="archive">
    <description>编译并打包一个应用程序</description>
    <!--在工程目录下创建输出目录:build/classes 和 dist-->
    <target name="init" description="创建目录">
        <mkdir dir="build/classes" />
        <mkdir dir="dist" />
    </target>
 
    <!--编译输出目录:srcdir-源目录和destdir-目标目录-->
    <target name="compile" depends="init" description="编译">
        <javac srcdir="src" destdir="build/classes" />
    </target>
 
    <!--打包 , depends依赖哪些target-->
    <target name="archive" depends="compile" description="打包">
        <war destfile="dist/antwebproject.war" basedir="build/classes" />
        <jar destfile="dist/project.jar" basedir="build/classes" />
    </target>
 
    <!--清理删除-->
    <target name="clean" depends="init" description="清理">
        <delete dir="build" />
        <delete dir="dist" />
    </target>
</project>
 
 
学习目标: webproject打War包
<?xml version="1.0"?>
<project name="antwebproject" default="war" basedir=".">
    <!--定义常量,任务可以引用-->
    <property name="classes" value="build/classes" />
    <property name="build" value="build" />
    <property name="lib" value="WebRoot/WEB-INF/lib" />
 
         
    <!-- 删除build路径-->
    <target name="clean">
        <delete dir="build" />
    </target>
 
 
    <!-- 建立build/classes路径,并编译class文件到build/classes路径下-->
    <target name="compile" depends="clean">
        <mkdir dir="${classes}" />
        <javac srcdir="src" destdir="${classes}" />
    </target>
 
 
    <!-- 打war包-->
    <target name="war" depends="compile">
        <war destfile="${build}/AntProject.war" webxml="WebRoot/WEB-INF/web.xml">
            <!-- 拷贝WebRoot下除了WEB-INF和META-INF的两个文件夹 , **意为:匹配0或者更多的目录-->
            <fileset dir="WebRoot" includes="**/*.jsp" />
 
            <!-- 拷贝lib目录下的jar包-->
            <lib dir="${lib}" />
 
            <!-- 拷贝build/classes下的class文件-->
            <classes dir="${classes}" />
 
        </war>
    </target>
 
  1. <target name="zip" depends="doc">  
  2.         <!--  
  3.             destfile    目标文件  
  4.             duplicate   打包方式(一般使用preserve)  
  5.             zipfileset  打包那些文件  
  6.             prefix      增加前缀(使用最佳实践)  
  7.         -->  
  8.         <zip destfile="${zip.dir}/${zip.nane}" duplicate="preserve">  
  9.             <zipfileset dir="${build.doc}" includes="**/*.*"   
  10.                 prefix="${project.name}/doc/api"/>  
  11.             <zipfileset dir="${src.dir}" includes="**/*.*"   
  12.                 prefix="${project.name}/src"/>  
  13.         </zip>  
  14.     </target>  

</project>



由上面的命令的错误提示可以看出,ant命令默认寻找build.xml文件。若文件名为 hello.xml时,读者还需要对命令做少许改变,改为:ant –f hello.xml sayHelloWorld、ant –buildfile hello.xml sayHelloWorld或ant –file hello.xml sayHelloWorld。

0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 网上下载的3d模型渲染很慢怎么办 cad下载完成后出现闪退怎么办 婴儿在肚子里被系带绑到怎么办 我想给外地的朋友送花怎么办 英雄联盟连接不上聊天服务器怎么办 用黄金换玫瑰金后悔了怎么办 劳力士日志系列玫瑰金和黄金怎么办 香菇代进地注水后长满绿毛怎么办 群主给你带了不满意的头衘怎么办 普兰德雪地靴洗变色了怎么办 书被水泡了皱了黏了怎么办 书被水泡了皱了没干怎么办 眼皮干燥起皮起皱怎么办能治好吗 手指头起小水泡指甲不平整怎么办 这几天我的内裤上带点血丝怎么办 一个月宝宝私处捂白了怎么办 工资算了字签了老板没把钱怎么办 百合种球叶子都变黄了怎么办 新买的富贵竹叶子发黄怎么办水养 朋友总是以隐私为借口欺骗我怎么办 三星手机版本低下载不了微信怎么办 选了动漫制作技术但不会画画怎么办 做主播高薪可是心累不愿做了怎么办 pr导出的avi无压缩太大怎么办 捡了个小米max被绑定了怎么办 二十岁时头发开始掉了怎么办 在酒店换衣服忘记关窗帘了怎么办 淘宝店铺装修更改图片要收费怎么办 惠阳市教育考试考证号忘记怎么办 高考完被被骗去读自考以后怎么办 孩子学习遇到瓶颈期了老师该怎么办 微信家长群有不好的言论出现怎么办 铃木汽车后备箱电动锁没有电怎么办 坐飞机没有连号座位带孩子怎么办 白沙的衣服洗衣服时染上颜色怎么办 网购商家少发了货怎么办 我想成为安利的员工怎么办会员 安利皇后锅锅盖吸在桌子上怎么办 淘宝客服退款返佣金诈骗后怎么办 第一试用网的钱提现出现问题怎么办 一个手机号注册两个京东账号怎么办