> Hello World !!!

     

@syaku

Apache Ant build 활용, 자바 컴파일 매크로 : JAVA Build

 

Ant 는 apache 그룹의 오픈프로젝트이다. 개미가 집을 짓는 것 처럼, Ant 를 이용해 다이나믹한 빌드를 수행할 수 있다.
자바 컴파일을 위해 주로 사용하는 데, Ant 에서 제안하는 가이드라인에 따라 build.xml 을 완성하여, ant 를 실행해 빌드를 수행하게 된다. 매크로프로그램이랄까? 귀찮은 컴파일을 이클립스를 이용하듯이 말이다.

Ant 설치

아파치 그룹에 접속하여 Ant 프로젝트안에 있는 바이너리를 다운 받는 다. 현재(2009년 5월 16일) 최신버전은 1.7.1 이다

Ant 공식사이트 : http://ant.apache.org
Ant 1.7.1 받기 : http://ant.apache.org/bindownload.cgi 

원하는 위치에 저장하고 압축을 풀어 준다. 아래부터 환경변수 설정법을 설명한다.

Ant  경로 : c:\ant , JAVA 경로 : c:\jdk-1.5.0.05 경우의 예

Windows 
set ANT_HOME=c:\ant
set JAVA_HOME=c:\jdk-1.5.0.05
set PATH=%PATH%;%ANT_HOME%\bin

Linux , Unix  (bash)
export ANT_HOME=/usr/local/ant
export JAVA_HOME=/usr/local/jdk-1.5.0.05
export PATH=${PATH}:${ANT_HOME}/bin

Linux , Unix (csh)
setenv ANT_HOME /usr/local/ant
setenv JAVA_HOME /usr/local/jdk/jdk-1.5.0.05
set path=( $path $ANT_HOME/bin )

Ant 셋팅이 모두 완료되었으면, 테스트는 필수조건. 아래와 같이 처리된다면 성공.
build.xml 파일이 없어 Ant 수행과정이 실패되었다.

 

build.xml 를 이용한 Ant Build 구현

<?xml version="1.0" encoding="UTF-8"?>
<!-- 
@ 프로젝트 설정
name : 프로젝트 명
basedir : 프로젝트 경로
default : Ant 수행 명령이 없을 경우 기본 수행 명령어
-->
<project name="sample" basedir=".">
  <!-- 
  @ 프로퍼티 설정 
  name : 프로퍼티 명
  value : 프로퍼티 값
  -->
  <property name="src.dir"     value="${basedir}/WEB-INF/src"/>
  <property name="classes.dir" value="${basedir}/WEB-INF/classes"/>
  <property name="jar.dir"     value="${basedir}/jar"/>

  <!-- 
  @ jar 폴더 삭제 명령
  name : 명령어
  dir : 대상 경로
  -->
  <target name="delete">
    <delete dir="${basedir}/jar"/>
  </target>

  <!-- 
  @ 자바 컴파일 
  name : 명령어
  srcdir : 소스 경로
  destdir : 클래스 경로
  -->
  <target name="compile">
    <javac srcdir="${src.dir}" destdir="${classes.dir}"/>
  </target>

  <!-- 
  @ 자바 클래스 jar 압축
  name : 명령어
  mkdir : 폴더 삭제 , dir : 대상 경로
  destfile : 생성될 경로
  basedir : 대상 경로
  -->
  <target name="jar" depends="compile">
    <mkdir dir="${jar.dir}"/>
    <jar destfile="${jar.dir}/apache-ant.jar" basedir="${classes.dir}" />
  </target>

  <!-- 
  @ 특정 경로 자바 클래스 jar 압축 
  name : 명령어
  includes : 특정 클래스 만 압축할 때
  -->
  <target name="use-jar" depends="compile">
    <mkdir dir="${jar.dir}"/>
    <jar destfile="${jar.dir}/apache-ant.jar" basedir="${classes.dir}" includes="${make}" />
  </target>
  
  <!-- 작업 명령 -->
  <target name="javac" depends="compile"/>
  <target name="javac-jar" depends="delete,jar"/>
  <target name="make-jar" depends="delete,use-jar"/>
</project>

-- 자바 컴파일
ant javac
-- 자바 클래스 jar 압축
ant javac-jar
-- 특정 클래스 jar 압축
ant -Dmake=org/json/**/* meke-jar

ant -help 를 통해 도움말을 볼 수 있다.

** 내용추가

20100421 - 위 내용을 이해했으면 Ant build 소스만봐도 이해할 것 같아... 최근에 만든 빌드소스를 첨부합니다. ;; 점차 Ant를 알아가다보니 중간에 내용을 첨부하기가 좀 그렇네요;



-- 클래스 패치 걸기

  <!-- 라이브러리 -->
  <path id="class-path">
    <pathelement path="${tomcat.lib.dir}/servlet-api.jar"/>
    <pathelement path="${tomcat.lib.dir}/jsp-api.jar"/>
    <pathelement path="${java.lib.dir}/tools.jar"/>

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

다음은 javac 엘리먼트에 사이에 넣어주면된다.
<javac ~~~~생략~>
<!-- 라이브러리 -->
<classpath refid="class-path" />
</javac>

-- 파일 복사하기
target 사이에 넣어주면 된다.

<target ~~~생략>
  <javac ~~~ 생략 />
    <!-- 파일 복사 : 설정파일들  (java 제외) -->
    <copy todir="${classes.dir}">
      <fileset dir="${src.dir}" excludes="**/*.java" />
    </copy>
</target>

-- bat 실행파일

set JAVA_HOME=C:\Program Files\Java\jdk1.5.0_06
ant -buildfile=build.xml -logfile=debug.log javac

로그 파일이 필요없을 경우 logfile 제거하기.

-- sh 실행파일

cd 빌드경로
exec ant javac

** 실행결과 ( 위 빌드과정과 관련이 없는 결과입니다.)


http://syaku.tistory.com