zoukankan      html  css  js  c++  java
  • [try it] 使用Apache Ant

    自从用了豆瓣,每每看完一部电影,或者一本书,总会在豆瓣留下几笔,对内容的理解也好,自己的感想也罢,少则用短评,多则用评论,偶尔复习浏览,整个的过程,对记忆非常有帮助,而且不怎么花时间 - 理解感想那是自然而然的事,不要去管什么格式文笔,一挥而就是了 —— 三拜九叩都做了,还怕这最后一哆嗦?

    但是对于技术,这方面的习惯不好 - 往往用过(试过)之后不注意记录,若干时间后又要用到,却已经忘的差不多了,又得重新来学一遍。 这些主要是一些工具,库什么的,以后就都记在博客中了,标之以[try it] 。

    要快速的学会使用一个新的工具,library,基本上有这么几个步骤吧:

    • 了解其基本概念:这是工具是干什么的,大概长的什么样,有什么特点与局限? 此时对其的认识还是比较抽象的
    • 下载安装其可用版本:保证其能运行,使用
    • 动手实践:根据教程,或者example,自己动手做个东西出来,这样就有一个非常直观的感受了

    这些资料,一般在官方网站能够找全,如果没有,相信搜也能搜到。

    废话讲完了,下面上ant。

    基本概念



    Apache Ant是java世界中的make(make是微软世界中的VC project, btw),是一个主要用来管理软件编译的工具。和make一样,ant也有target,dependency和rule的概念,只不过格式不一样:
    make:

    target:dependencies
    rules

    ant

    <target name="target3" depends="target1, target2" description="demo target" > 
    <echo message="rules: everything in this section are rules"/>
    </target>


    那么,已经有了make,为什么还需要ant呢? apache的理由是: 

    1. make的格式比较不标准,tab啊space啊容易出错,ant采用xml,感觉是要标准很多
    2. make多调用shell命令、程序,这对跨平台的java来讲是不能忍受的,ant采用java class实现的"task",和java跨一样的平台。

    这个理由还是蛮靠谱的。

    下载安装



    如果只是使用ant的话,没必要自己没事找事下载source code编译,直接下binary版本:http://ant.apache.org/bindownload.cgi

    • .zip archive: apache-ant-1.8.2-bin.zip
    • .tar.gz archive: apache-ant-1.8.2-bin.tar.gz
    • .tar.bz2 archive: apache-ant-1.8.2-bin.tar.bz2

    这三个包的内容是一样的,只不过适用于不同的平台,.zip是Windows下常用的zip压缩包;.tar.gz是tar打包,gzip压缩;.tar.bz2是tar打包,bzip2压缩。

    安装很简单,就是解压缩:

      ant
       +--- README, LICENSE, fetch.xml, other text files. //basic information
       +--- bin  // contains launcher scripts
       |
       +--- lib  // contains Ant jars plus necessary dependencies
       |
       +--- docs // contains documentation
       |      |
       |      +--- images  // various logos for html documentation
       |      |
       |      +--- manual  // Ant documentation (a must read ;-)
       |
       +--- etc // contains xsl goodies to:
                //   - create an enhanced report from xml output of various tasks.
                //   - migrate your build files and get rid of 'deprecated' warning
                //   - ... and more ;-)
    

    注意ant需要用到jdk,而不仅仅是jre,你需要设置相关的环境变量: 

    set ANT_HOME=D:\Source\Tools\apache-ant-1.8.2 
    set JAVA_HOME=C:\Program Files\Java\jdk1.7.0
    set PATH=%PATH%;%ANT_HOME%\bin

    Ant其实是一个java程序,一般通过shell或者batch封装的script运行,比如windows下就是ant.bat,做一些初始化的工作,然后调用java ant-launcher.jar。

    好,现在验证一下是否安装成功:

    D:\Source\TestingArena\Java\Ant 
    $ ant -version
    Apache Ant(TM) version 1.8.2 compiled on December 20 2010

    动手实践



    ant manual的内容很多,但是要最快的学会一样东西,就是过一遍他的教程:Manual -> Tutorials,这些教程写的非常简单明了,而且提供了可以直接使用的代码与build.xml,我花了大概1个小时过了一遍前两个教程:HelloWorld和Write Tasks,就感觉对用ant写java程序,测试java程序有了很好的理解。

    几个tips:

    • ant -diagnostics, ant -verbose, ant -debug对调试ant非常有用
    • 跑junit,你需要自行下载junit(https://github.com/KentBeck/junit/downloads), 命名成junit.jar并放到ant/lib目录中
    • 只要实现了public void execute()函数的java类就可以是一个ant task,ant会使用反射找到并执行它,当然,需要通过taskdef引入:
       
      <taskdef name="helloworld"
      classname="HelloWorld"
      classpath="helloworld.jar"/>
    • ant-contrib是一个比较常用的第三方task库,提供了不少辅助性质的task,如if,switch等控制语句. 他们往往提供了一个属性文件供你导入:
       
      <taskdef resource="net/sf/antcontrib/antcontrib.properties"/>
      该文件内容是task名字与jar包中类名的对应:
      if=net.sf.antcontrib.logic.IfTask
      foreach=net.sf.antcontrib.logic.ForEach
      throw=net.sf.antcontrib.logic.Throw
      trycatch=net.sf.antcontrib.logic.TryCatchTask
      switch=net.sf.antcontrib.logic.Switch
      outofdate=net.sf.antcontrib.logic.OutOfDate
    • build.xml中的property类似于变量,它也可以在其中文件中定义并导入:
      <!-- build.properties: define the properties -->
      helloworld.property1=Hello
      helloworld.property2=World

      <!-- build.xml: import and use -->
      <property file="build.properties" />
      <target name="tryproperty" description="Use property file" >
      <echo message="${helloworld.property1} ${helloworld.property2}"/>
      </target>
  • 相关阅读:
    关于Certificate、Provisioning Profile
    苹果开发者账号类型
    在 iTunes Connect 中,无法找到“My Apps”选项
    iOS 开发,相关网址
    dart 使用
    initState 必须调用 super.initState(); 否则报错
    TabBar 设置可滚动:isScrollable: true
    flutter 从创建到渲染的大体流程
    获取对象State的方法
    beforeRouteEnter 与 beforeRouteUpdate(watch $route 对象) 的区别
  • 原文地址:https://www.cnblogs.com/baiyanhuang/p/2308511.html
Copyright © 2011-2022 走看看