정리된 Ant 스크립트 NCHOVY

이제야 좀 쓸만하네..;
약간 더 공을 들여서 일일이 복사할 라이브러리를 지정해주면 정확하게 동작한다.

나머지 프로젝트의 경우 바로 아래의 build.xml 정도만 기술해주면 된다.
공통으로 common.xml 쓰고 세세한 프로젝트별 설정만 해주면 되는 것임.

cve 수집기 build.xml

<project name="cvecollector" default="bin" basedir=".">
  <import file="../../common.xml" />

  <property name="main-class" value="kr.nchovy.collector.cve.CveCollector" />

  <target name="compile-dependent-projects">
    <subant failonerror="true" buildpath="../../model/cve" />
    <copy file="../../model/cve/bin/model-cve.jar" todir="${bin}" />
  </target>

  <target name="copy-dependent-libraries">
    <copy todir="${bin}">
      <fileset dir="../../../vendor/">
        <include name="*.jar" />
      </fileset>
    </copy>
  </target>

  <target name="copy-resources">
    <copy file="hibernate.cfg.xml" todir="${obj}" />
    <copy file="log4j.properties" todir="${obj}" />
  </target>
</project>

CVE 모델 build.xml
<project name="model-cve" default="bin" basedir=".">
  <import file="../../common.xml" />

  <property name="main-class" value="" />

  <target name="compile-dependent-projects" />
  <target name="copy-dependent-libraries">

  </target>
  <target name="copy-resources">
    <copy todir="${obj}/kr/nchovy/model/cve">
      <fileset dir=".">
        <include name="*.hbm.xml" />
      </fileset>
    </copy>
  </target>
</project>

common.xml

<project>
  <property name="obj" location="obj" />
  <property name="bin" location="bin" />

  <path id="libraries">
    <fileset dir="${bin}">
      <include name="*.jar" />
    </fileset>
  </path>

  <target name="clean">
    <delete dir="${obj}" />
    <delete dir="${bin}" />
  </target>

  <target name="init">
    <tstamp/>
    <mkdir dir="${obj}" />
    <mkdir dir="${bin}" />
  </target>

  <target name="compile" depends="init, copy-dependent-libraries, compile-dependent-projects">
    <javac srcdir="." destdir="${obj}" classpathref="libraries" />
  </target>

  <target name="bin" depends="compile, copy-resources">
    <fileset id="jars" dir="${bin}">
      <include name="*.jar" />
    </fileset>

    <path id="cp">
      <fileset refid="jars" />
    </path>

    <pathconvert property="classpath" refid="cp" pathsep=" " dirsep="/">
      <map from="${bin}/" to="" />
    </pathconvert>

    <jar jarfile="${bin}/${ant.project.name}.jar" basedir="${obj}">
      <manifest>
        <attribute name="Main-Class" value="${main-class}" />
        <attribute name="Class-Path" value="${classpath}" />
      </manifest>
    </jar>
  </target>
</project>


트랙백

이 글과 관련된 글 쓰기 (트랙백 보내기)
TrackbackURL : http://xeraph.com/tb/4412297 [도움말]

핑백

  • Xeraph beyond the Great Firewall : 2008년 회고록 (작성 중) 2008-12-18 01:03:02 #

    ... 군요. 아무리 부모-자식 잘 쪼개놔도 노가다는 노가다. 결국 Maven으로 넘어가는 계기가 되었습니다. 도중에 Ant 버그도 발견해서 리포트했었고요. (FIX 됨) 관련 글은 정리된 Ant 스크립트와 Ant Jar Task에서 Manifest Class-Path 자동 입력하기입니다. MavenLog4JMINAJAAS형태소분석 Lucene, BDB, Inverted ... more

덧글

댓글 입력 영역