I want to fly higher
programming Explorer
posts - 114,comments - 263,trackbacks - 0

1.http://ant.apache.org/
     1.下载:apache-ant-1.9.3-bin.zip
     2.解压到C盘.
     3.设置环境变量PATH:C:\apache-ant-1.9.3\bin
     4.cmd下输入:ant -version
      Apache Ant(TM) version 1.9.3 compiled on December 23 2013

2.ant -help
 ant [options] [target [target2 [target3] ...]]

     常用:
     1.ant 使用当前目录下的build.xml运行Ant,执行缺省的target
     2.ant -buildfile mavs.xml 使用当前目录下的build.xml运行Ant,执行缺省的target
     3.ant -buildfile mavs.xml dist 使用当前目录下的mavs.xml运行Ant,执行一个叫做dist的target
     4.-D选项可以设置属性值

3.Ant的4个核心元素:project、target、property、task

4.project元素:
     1.project元素是Ant构件文件的根元素,Ant构件文件至少应该包含一个project元素,否则会发生错误。在每个project元素下,可包含多个target元素
     2.name属性:用于指定project元素的名称
     3.default属性:用于指定project默认执行时所执行的target的名称
     3.basedir属性:用于指定基路径的位置。该属性没有指定时,使用Ant的构件文件的父目录作为基准目录.

5.target元素
     1.它为Ant的基本执行单元,它可以包含一个或多个具体的任务。多个target可以存在相互依赖关系
     2.name属性:指定target元素的名称,这个属性在一个project元素中是唯一的。我们可以通过指定target元素的名称来指定某个target
     3.depends属性:用于描述target之间的依赖关系,若与多个target存在依赖关系时,需要以“,”间隔。Ant会依照depends属性中target出现的顺序依次执行每个target。被依赖的target会先执行
     4.if属性:用于验证指定的属性是否存在,若不存在,所在target将不会被执行
     5.unless属性:该属性的功能与if属性的功能正好相反,它也用于验证指定的属性是否存在,若不存在,所在target将会被执行。
     6.description属性:该属性是关于target功能的简短描述和说明

6.property元素
     1.该元素可看作参量或者参数的定义,project的属性可以通过property元素来设定,也可在Ant之外设定。若要在外部引入某文件,例如build.properties文件,可以通过如下内容将其引入:<property file=” build.properties”/>
     2.property元素可用作task的属性值。在task中是通过将属性名放在“${”和“}”之间,并放在task属性值的位置来实现的
     3.Ant提供了一些内置的属性,它能得到的系统属性的列表与Java文档中System.getPropertis()方法得到的属性一致
      java.version Java 运行时环境版本 
      java.vendor Java 运行时环境供应商 
      java.vendor.url Java 供应商的 URL 
      java.home Java 安装目录 
      java.vm.specification.version Java 虚拟机规范版本 
      java.vm.specification.vendor Java 虚拟机规范供应商 
      java.vm.specification.name Java 虚拟机规范名称 
      java.vm.version Java 虚拟机实现版本 
      java.vm.vendor Java 虚拟机实现供应商 
      java.vm.name Java 虚拟机实现名称 
      java.specification.version Java 运行时环境规范版本 
      java.specification.vendor Java 运行时环境规范供应商 
      java.specification.name Java 运行时环境规范名称 
      java.class.version Java 类格式版本号 
      java.class.path Java 类路径 
      java.library.path 加载库时搜索的路径列表 
      java.io.tmpdir 默认的临时文件路径 
      java.compiler 要使用的 JIT 编译器的名称 
      java.ext.dirs 一个或多个扩展目录的路径 
      os.name 操作系统的名称 
      os.arch 操作系统的架构 
      os.version 操作系统的版本 
      file.separator 文件分隔符(在 UNIX 系统中是“/”) 
      path.separator 路径分隔符(在 UNIX 系统中是“:”) 
      line.separator 行分隔符(在 UNIX 系统中是“/n”) 
      user.name 用户的账户名称 
      user.home 用户的主目录 
      user.dir 用户的当前工作目录
     4.Ant还提供了一些它自己的内置属性
      basedir:project基目录的绝对路径
      ant.file:buildfile的绝对路径
      ant.version:Ant的版本
      ant.project.name:当前指定的project的名字
      ant.java.version:Ant检测到的JDK的版本

7.ant常用任务
     1.copy任务:文件和目录的复制
      其常用属性包括file/tofile/todir/
      另外fileset定义的是源目录的组成形式,<include/>子属性表示包括,<exclude/>子属性表示排除
     2.delete任务:对文件或目录进行删除
      其常用属性包括file/dir
      可通过fileset指定includes/excludes
     3.mkdir任务:创建目录
     4.move任务:移动文件或目录
      其常用属性包括file/tofile/todir
     5.echo任务:根据日志或监控器的级别输出信息
      其常用属性包括message/file/append/level/encoding等.
     6.javac任务:编译
      其常用属性包括srcdir/destdir/classpath/debug等.
     7.jar任务:jar
      其常用属性包括destfile/basedir/manifest等.
     8.war任务:war
      其常用属性包括destfile/warfile/webxml等.
     9.java任务:运行
      其常用属性包括classname/jar/args等.

8.ant manual
 1.在线:http://ant.apache.org/manual/index.html
 2.离线下载:http://ant.apache.org/manualdownload.cgi

9.附本机的一个build.xml
    1.workspace包括mina-2.0.7源码工程,mavs_common工程;mavs_protocol工程;mavs_example工程
    2.mina工程内有lib目录,为编译mina源码所需的jar
    3.mavs_common工程依赖mina工程,也有一个lib目录为其余工程提供jar
    3.mavs_example工程依赖protocol工程,prototol工程依赖common工程
     该build.xml用来编译mina源码以及mavs项目并且发布.
    

<?xml version="1.0" encoding="UTF-8"?>

<project name="mavs" default="dist-mina" basedir=".">
    
    
<!-- apache-mina源码工程属性 -->
    
<property name="src.mina.dir" location="${basedir}/../apache-mina-2.0.7"/>
    
<property name="src.mina.core.dir" location="${src.mina.dir}/mina-core"/>
    
<property name="src.mina.example.dir" location="${src.mina.dir}/mina-example"/>
    
<property name="src.mina.compression.dir" location="${src.mina.dir}/mina-filter-compression"/>
    
<property name="src.mina.http.dir" location="${src.mina.dir}/mina-http"/>
    
<property name="src.mina.beans.dir" location="${src.mina.dir}/mina-integration-beans"/>
    
<property name="src.mina.jmx.dir" location="${src.mina.dir}/mina-integration-jmx"/>
    
<property name="src.mina.ognl.dir" location="${src.mina.dir}/mina-integration-ognl"/>
    
<property name="src.mina.xbean.dir" location="${src.mina.dir}/mina-integration-xbean"/>
    
<property name="src.mina.statemachine.dir" location="${src.mina.dir}/mina-statemachine"/>
    
<property name="src.mina.apr.dir" location="${src.mina.dir}/mina-transport-apr"/>
    
<property name="src.mina.serial.dir" location="${src.mina.dir}/mina-transport-serial"/>
    
<property name="src.mina.test.dir" location="${src.mina.dir}/test"/>
    
    
<!-- mavs源码工程属性 -->
    
<property name="src.mavs.common.dir" location="${basedir}/../mavs_common/src"/>
    
<property name="src.mavs.protocol.dir" location="${basedir}/../mavs_protocol/src"/>
    
<property name="src.mavs.example.dir" location="${basedir}/../mavs_example/src"/>
    
<property name="mavs.common.lib.dir" location="${basedir}/../mavs_common/lib"/>
    
<property name="mavs.example.resource.dir" location="${basedir}/../mavs_example/resource"/>
    
    
    
<property name="build.dir" value="build"/>
    
<property name="build.class.dir" location="${build.dir}/classes"/>
    
<property name="build.lib.dir" location="${build.dir}/lib"/>
    
<property name="build.resource.dir" location="${build.dir}/resource"/>
    
    
<property name="build.dist.mina.dir" location="${build.dir}/dist/mina"/>
    
<property name="build.dist.mavs.dir" location="${build.dir}/dist/mavs"/>
    
    
<property name="dist.mina.jar" value="mina-2.0.7.jar"/>
    
<property name="dist.mavs.jar" value="mavs.jar"/>
    
    
<!--指定编译的lib cp-->
    
<path id="project.classpath">
        
<fileset dir="${build.lib.dir}">
            
<include name="**/*.jar"/>
        
</fileset>
    
</path>
    
     
<!-- Tasks -->
    
    
<target name="clean">
        
<delete dir="${build.dir}"></delete>
    
</target>
        
    
<target name="init" depends="clean">
        
<mkdir dir="${build.dir}"/>
        
<mkdir dir="${build.class.dir}"/>
        
<mkdir dir="${build.lib.dir}"/>
        
<mkdir dir="${build.dist.mina.dir}"/>
        
<mkdir dir="${build.dist.mavs.dir}"/>
        
<mkdir dir="${build.resource.dir}"/>
        
        
<!-- 拷贝lib -->
        
<copy todir="${build.lib.dir}">
            
<fileset dir="${src.mina.dir}/lib"></fileset>
            
<fileset dir="${mavs.common.lib.dir}"></fileset>
        
</copy>
    
</target>

    
<!-- 编译apache-mina-2.0.7 -->
    
<target name="compile-mina" depends="init">
        
<javac srcdir="${src.mina.core.dir}" destdir="${build.class.dir}" debug="on" encoding="UTF-8">
            
<classpath refid="project.classpath"></classpath>
        
</javac>
        
<javac srcdir="${src.mina.compression.dir}" destdir="${build.class.dir}" debug="on" encoding="UTF-8">
            
<classpath refid="project.classpath"></classpath>
        
</javac>
        
<javac srcdir="${src.mina.http.dir}" destdir="${build.class.dir}" debug="on" encoding="UTF-8">
            
<classpath refid="project.classpath"></classpath>
        
</javac>
        
<javac srcdir="${src.mina.beans.dir}" destdir="${build.class.dir}" debug="on" encoding="UTF-8">
            
<classpath refid="project.classpath"></classpath>
        
</javac>
        
<javac srcdir="${src.mina.ognl.dir}" destdir="${build.class.dir}" debug="on" encoding="UTF-8">
            
<classpath refid="project.classpath"></classpath>
        
</javac>
        
<javac srcdir="${src.mina.xbean.dir}" destdir="${build.class.dir}" debug="on" encoding="UTF-8">
            
<classpath refid="project.classpath"></classpath>
        
</javac>
        
<javac srcdir="${src.mina.statemachine.dir}" destdir="${build.class.dir}" debug="on" encoding="UTF-8">
            
<classpath refid="project.classpath"></classpath>
        
</javac>
        
<javac srcdir="${src.mina.apr.dir}" destdir="${build.class.dir}" debug="on" encoding="UTF-8">
            
<classpath refid="project.classpath"></classpath>
        
</javac>
        
<javac srcdir="${src.mina.serial.dir}" destdir="${build.class.dir}" debug="on" encoding="UTF-8">
            
<classpath refid="project.classpath"></classpath>
        
</javac>
        
<javac srcdir="${src.mina.jmx.dir}" destdir="${build.class.dir}" debug="on" encoding="UTF-8">
            
<classpath refid="project.classpath"></classpath>
        
</javac>
        
<javac srcdir="${src.mina.example.dir}" destdir="${build.class.dir}" debug="on" encoding="UTF-8">
            
<classpath refid="project.classpath"></classpath>
        
</javac>
    
</target>
    
    
<!-- 打包mina -->
    
<target name="dist-mina" depends ="compile-mina">
        
<jar destfile="${build.dist.mina.dir}/${dist.mina.jar}" basedir="${build.class.dir}"></jar>
    
</target>
    
    
<!-- 编译mavs -->
    
<target name="compile-mavs" depends = "compile-mina">
        
<javac srcdir="${src.mavs.common.dir}" destdir="${build.class.dir}" debug="on" classpathref="project.classpath" encoding="UTF-8">
        
</javac>
        
<javac srcdir="${src.mavs.protocol.dir}" destdir="${build.class.dir}" debug="on" classpathref="project.classpath" encoding="UTF-8">
        
</javac>
        
<javac srcdir="${src.mavs.example.dir}" destdir="${build.class.dir}" debug="on" classpathref="project.classpath" encoding="UTF-8">
        
</javac>
        
<!-- 拷贝example下的resource目录 -->
        
<copy todir="${build.resource.dir}">
            
<fileset dir="${mavs.example.resource.dir}"></fileset>
        
</copy>
    
</target>
    
    
<!-- 打包mavs -->
    
<target name="dist-mavs" depends ="compile-mavs">
        
<jar destfile="${build.dist.mavs.dir}/${dist.mavs.jar}" basedir="${build.class.dir}"></jar>
        
<!-- 删除classes并拷贝jar至build根目录 -->
        
<delete dir="${build.class.dir}"></delete>
        
<copy file="${build.dist.mavs.dir}/${dist.mavs.jar}" todir="${build.dir}"></copy>
    
</target>

</project>

 

posted on 2014-02-01 20:40 landon 阅读(1869) 评论(1)  编辑  收藏 所属分类: Utils

FeedBack:
# re: Apache Ant基础
2014-02-23 21:55 | GoDaddy
学习了Apache Ant基础  回复  更多评论
  

只有注册用户登录后才能发表评论。


网站导航: