• Ant+Ivy for building java projects


    Install Ant: download the ant package

    tar zvxf apache-ant-1.9.4-bin.tar.gz
    #in .bashrc file
    #Ant
    export ANT_HOME=/home/chase/runnable/apache-ant-1.9.4
    export CLASSPATH=${ANT_HOME}/lib:${CLASSPATH}:.
    export PATH=${ANT_HOME}/bin:${PATH}

     Install Ivy: download the latest Ivy package "apache-ivy-2.4.0-rc1-bin.tar.gz" and unpack

    tar zvxf apache-ivy-2.4.0-rc1-bin.tar.gz 

    it shows:

    and then copy the jar to the ant/lib classpath:

    chase@pc0:~/runnable/apache-ivy-2.4.0-rc1$ cp ivy-2.4.0-rc1.jar ../apache-ant-1.9.4/lib/

    then Ant and Ivy is combined!!!!!!!!!!!

    How to use Ant and Ivy together

    for ant create a build.xml, for Ivy create an ivy.xml file. That is

    this project is for building an xx.aj file. ant is for building and ivy is for reslove dependencies:

    the build file is

    <!-- Tracer / AP01
    
         Author: Klaus Marius Hansen, DIKU
    -->
    
    <project name="template" default="help" basedir="."
         xmlns:ivy="antlib:org.apache.ivy.ant" >
    
      <!-- Several targets are copied from the Ivy tutorials -->
      <property name="lib.dir" value="lib" />
      <property name="build.dir" value="build" />
      <property name="src.dir" value="src" />  
      <property name="test.dir" value="test" />
    
      <!-- paths used for compilation and run  -->
      <path id="lib.path.id">
        <fileset dir="${lib.dir}" />
      </path>
      <path id="run.path.id">
        <path refid="lib.path.id" />
        <path location="${build.dir}" />
      </path>
    
      <target name="help">
        <echo>
       AP01 Tracer - simple tracer 
       Targets 
        clean:       Removes all bytecode.
        build-all:        Build and create JAR
    
      Author: Klaus Marius Hansen
        </echo>
      </target>
      
      <target name="clean">
        <delete dir="${build.dir}"/>
        <delete dir="${lib.dir}"/>
        <delete dir="output"/>
      </target>
      
      <target name="prepare">
        <mkdir dir="${build.dir}"/>
        <mkdir dir="${lib.dir}"/>
      </target>
      
      <!-- ================================= 
           target: resolve              
           ================================= -->
      <target name="resolve" 
          description="--> retreive dependencies with ivy">
        <ivy:retrieve/><!--retrieve任务复制解析好的依赖到你的文件系统的任何位置-->
      </target>    
      
      <!-- ================================= 
           target: report              
           ================================= -->
      <target name="report" depends="resolve" 
          description="--> generates a report of dependencies">
        <ivy:report todir="${build.dir}"/>
      </target>
    
      <!-- compilation tasks -->
      <!-- AspectJ definition -->
      <target name="build-src" depends="prepare,resolve">
        <taskdef resource="org/aspectj/tools/ant/taskdefs/aspectjTaskdefs.properties" 
          classpath="${lib.dir}/aspectjtools-1.8.4.jar"/>
        <iajc sourceroots="${src.dir}" source="1.6" outjar="${build.dir}/apsensor.jar" outxml="true">
          <classpath>
            <pathelement location="${lib.dir}/aspectjrt-1.8.4.jar"/>
          </classpath>
        </iajc>
      </target>
    
      <target name="build-test" depends="build-src">
        <javac srcdir="${test.dir}"
           destdir="${build.dir}"
           debug="on" 
           classpathref="lib.path.id" 
           includeAntRuntime="false">
        </javac>
      </target>
    
      <target name="copy-resource">
        <!-- empty -->
      </target>
      
      <target name="build-all" 
          depends="build-src,build-test,copy-resource"/>
    
    </project>

    The ivy.xml is

    <ivy-module version="2.4">
        <info organisation="ap" module="harvest"/>
        <dependencies>
          <dependency org="org.aspectj" name="aspectjrt" rev="1.8.4"/>
          <dependency org="org.aspectj" name="aspectjtools" rev="1.8.4"/>
          <dependency org="org.aspectj" name="aspectjweaver" rev="1.8.4"/>
          <dependency org="junit" name="junit" rev="4.10"/>
        </dependencies>
    </ivy-module>

    The src folder is the .aj file: src/dk/diku/tracer/Tracer.aj

    The test folder is empty. After run

    $ant clean build-all

    is becomes:

    in the build folder :

    in the lib folder:

    Then the aspectj advices are weaved into the apsensor.jar file which can be used in other java files.

  • 相关阅读:
    flume 安装过程记录
    hive 动态分区插入
    hive 数据导入
    scala 学习笔记
    hive 日志
    Linux下设置和查看环境变量
    数据结构(4):图解递归调用机制
    使用数据结构栈实现表达式计算器
    数据结构(3):java使用数组模拟堆栈
    使用Vue和Element-ui的cdn模式临摹一个后台框架
  • 原文地址:https://www.cnblogs.com/chaseblack/p/4103714.html
Copyright © 2020-2023  润新知