2018년/DataBase

카산드라 -2부 : ant 사용하기

위지원 2018. 9. 16. 19:01

사전 준비

  • 아파치 앤트 빌드 툴 : http://ant.apache.org/
  • JUnit Jar : 좋은 경로를 아직 못구했다. jar파일마다 다 깨져있어 엉엉 ㅠ.ㅠ

아래와 같이 폴더를 구성한다.


[weejw@com ~]$ tree hpcbuild/
hpcbuild/
├── lib
└── src
    ├── java
    └── test

4 directories, 0 files


카산드라의 라이브러리와 다운받은 JUnit 라이브러리를 위에서 생성한 lib폴더안에 복사한다.


[weejw@com lib]$ ls
HdrHistogram-2.1.9.jar                              jctools-core-1.2.1.jar
ST4-4.0.8.jar                                       jflex-1.6.0.jar
airline-0.6.jar                                     jna-4.2.2.jar
antlr-runtime-3.5.2.jar                             joda-time-2.4.jar
apache-cassandra-3.11.3.jar                         json-simple-1.1.jar
apache-cassandra-thrift-3.11.3.jar                  jstackjunit-0.0.1.jar
asm-5.0.4.jar                                       junit-4.10.jar
<..생략>


이제 Ant 빌드툴에서 사용할 build.xml을 작성한다.


먼저 가장 위에 필요한 곳의 경로를 설정해준다.


<project name="hpcas" default="dist" basedir=".">
  <property name="src"              location="src/java"/>
  <property name="build"           location="build"/>
  <property name="build.classes"  location="build/classes"/>
  <property name="dist"             location="dist"/>
  <property name="lib"              location="lib"/>
</project>


빌드를 위한 경로를 아래와 같이 설정해준다.


<path id="hpcas.classpath">
    <pathelement location="${build.classes}"/>
    <fileset dir="${lib}" includes="*jar"/>
  </path>


target은 한 단위의 작업을 수행한다.

난중에 ant init , ant run등 과같이 명령어처럼 사용한다고 생각하면 된다.


  <target name="init">
    <mkdir dir="${build}"/>
    <mkdir dir="${build.classes}"/>
  </target>

  <target name="compile" depends="init">
    <javac srcdir="${src}" destdir="${build.classes}" includeantruntime="false">
      <classpath refid="hpcas.classpath"/>
    </javac>
  </target>

  <target name="dist" depends="compile">
    <mkdir dir="${dist}/lib"/>
    <jar jarfile="${dist}/lib/hpcas.jar" basedir="${build.classes}"/>
  </target>

 <target name="run" depends="dist">
   <java classname="${classToRun}">
     <classpath refid="hpcas.classpath"/>
   </java>
 </target>

 <target name="clean">
   <delete dir="${build}"/>
   <delete dir="${dist}"/>
 </target>


그리고서 src/java 아래에 다음과같이 간단하게 코드를 하나 작성해주자.


public class A{
  public static void main(String[] args){
    System.out.println("yo cassandra");
  }
}


그리고서 아래와 같이 실행 시켜주면 결과를 확인 할 수 있다.


[weejw@com hpcbuild]$ ant -DclassToRun=A run
Buildfile: /home/weejw/hpcbuild/build.xml

init:
    [mkdir] Created dir: /home/weejw/hpcbuild/build
    [mkdir] Created dir: /home/weejw/hpcbuild/build/classes

compile:
    [javac] Compiling 1 source file to /home/weejw/hpcbuild/build/classes

dist:
    [mkdir] Created dir: /home/weejw/hpcbuild/dist/lib
      [jar] Building jar: /home/weejw/hpcbuild/dist/lib/hpcas.jar

run:
     [java] yo cassandra

BUILD SUCCESSFUL
Total time: 2 seconds


만약에 junit을 이용해서 test하기 위해선 아래와같은 내용만 추가해주면 된다.

1) test를 위한 경로를 잡아준다.

2) 초기화부분에 test용 폴더를 만들어준다.

3) junit에 대한 설정을 해준다.


  <property name="test.src"   location="src/test"/>
  <property name="test.build" location="build/test"/>


<...생략>

 <path id="hpcas.test.classpath">
    <pathelement location="${test.build}"/>
    <fileset refid="hpcas.classpath"/>
  </path>

  <target name="init">
    <mkdir dir="${build}"/>
    <mkdir dir="${build.classes}"/>
    <mkdir dir="${test.build}"/>
  </target>


 <target name="compile-test" depends="init">
    <javac srcdir="${test.src}" destdir="${test.build}">
      <classpath refid="hpcas.test.classpath"/>
    </javac>
  </target>

  <target name="test" depends="compile-test,compile">
    <junit printsummary="yes" showoutput="ture">
      <batchest>
        <fileset dir="${test.build" includes="**/Test*.class"/>
      </batchest>
    </junit>
  </target>