[스트리밍] Ant 환경에서 build.xml(red5) rebuild 하기

책에는 단순히 jar 에 대한 부분만 살짝~ 언급이 되어있어 뭔가 많이 부족함을 느끼고 있었고, 그에 따라 ant 를 떠올리게 되었다.


문이 싫은 사람들은 http://www.apache-korea.org/ant/ 에서 한글문서를 볼 수 있다. 다만 1.5.1
까지만 내용이 있는것으로 봐서 업데이트가 오랫동안 이루어지지 않은것 같다. 하지만 기본내용은 비슷하다는 거~

우선 ant 를 다운로드 받는다. 물론 eclipse 를 사용하면 기본적으로 탑재가 되어있지만, 때에 따라서는 eclipse 같은 IDE 툴을 사용하지 못할 수 도 있기 때문에 일단 배재시키고 이야기해 보자.


축을 풀어보면 뭔가 잡다한 파일들이 많이 보인다. 우선 $ANT_HOME/bin 을 환경변수의 PATH 에 잡고 커맨드 창에서
ant 라고 쳐 보면 아래와 같은 메시지가 나올 것이다. 그러면 일단 설치는 성공~ (환경변수를 잡기 싫으면 ant 실행시
경로포함하여 실행하세요)

Buildfile: build.xml does not exist!
Build failed

메시지를 살펴보면 build.xml 파일이 존재하지 않는다고 한다. ant 는 기본적으로 build.xml 이라는 이름을 가진 파일에 설정을 하고 되어있다.

그럼 여기서 목표를 잡아보면 ant 를 이용하여 컴파일을 해보자.

우선, 커맨드 창에서 java 컴파일을 했던 방법을 떠 올려보자. 그동안 IDE 툴에 너무 익숙해져 있어서 다소 생소하게 느껴지지만 기억을 다듬어 보면 아래와 같은 형태로 컴파일을 한다.

javac -cp 필요한라이브러리 xxx.java 
(너무 기초부터 나온다고 뭐라하지 마세용.)

그럼 ant의 설정파일인 build.xml 의 구조를 간단히 살펴보자.

<?xml version=”1.0″ encoding=”UTF-8″?>
<project name=”agilejava” default=”build” basedir=”.”>
</project>


장 기본이 되는 형태이다. default 값이 build 로 설정되었다는 의미는 ant 만 실행시에 build 라는 타겟을
찾아서 실행하라는 의미이고 basedir 의 값이 ‘.’  build.xml  과 같은  레벨을 기준으로 상대경로를 잡는다는
의미이다.

다음으로 아래와 같은 property 들을 정의할 수 있다. 코딩으로 따지자면 선언해 놓은 상수(?) 정도라고 할 수 있겠다.
자주 사용하는 것들을 미리 등록해 놓으면 편하게 쓸 수 있다. value 대신에 location 을 사용해도 무방하다.

    <property name=”project.name” value=”AntTask”/>
    <property name=”PROJECT” value=”D:/workspace/${project.name}” />
    <property name=”build.dir” value=”${PROJECT}/build”/>
    <property name=”dist.dir” value=”${PROJECT}/dist”/>
    <property name=”src.dir” value=”${PROJECT}/src”/>

    필요한 라이브러리들의 클래스 패스를 잡는다.
    스프링으로 따지자면 ref 속성으로 쓰기위한 하나의 bean 을 등록한다고나 할까?

    <path id=”project.classpath”>
        <fileset dir=”${PROJECT}/web/WEB-INF/lib” includes=”**/*.jar” />
    </path>

   
    우리가 이번글에서 목표로 하는 컴파일이다. target 속성에 depends 라는 녀석이 보이고 init 이라는 값을 가지고 있다.
    build 타겟을 실행할 때  init  타겟을 먼저 수행하라는 의미이다.  init 내용은  더 밑에서 살펴보고  build 를 좀 더  봐보자.
    javac 라는 녀석이 보인다.  컴파일을  수행하라는 이야기다.
   
src ==> 소스 디렉토리,   destdir ==>  컴파일 된  클래스 파일이 들어갈 디렉토리 includes
는 컴파일 할 대상(여기서는 모든경로의 모든 java 파일을 설정). 나머지 옵션은 에러추적용 이므로 패스~
    위에서 설정한 라이브러리 패스를 사용하여 컴파일을 한다.

    <target name=”build” depends=”init”>
        <javac srcdir=”${src.dir}” destdir=”${build.dir}” includes=”**/*.java” debug=”true” failonerror=”true”>
            <classpath refid=”project.classpath” />
        </javac>
    </target>

    init 타겟은 별 내용이 없다. 시작시와 끝날시에 메시지 보여주고 컴파일 시에 필요한 디렉토리를 생성시킨다.
    <target name=”init”>
        <echo message=”init… start” />
        <mkdir dir=”${build.dir}”/>
        <mkdir dir=”${dist.dir}”/>
        <echo message=”init… end” />
    </target>

이제 실행을 해 보면 아래와 같은 형태의 메시지를 볼 수 있다.
>ant build

Buildfile: build.xml

init:
     [echo] init… start
     [echo] init… end

build:
    [javac] Compiling 1 source file to D:\workspace\AntTask\build

BUILD SUCCESSFUL
Total time: 4 seconds

빌드가 이루어지면 컴파일이 된 것을 확인할 수 있다

출처 : by 윤걸 님. http://gerions.egloos.com/

서진우

슈퍼컴퓨팅 전문 기업 클루닉스/ 상무(기술이사)/ 정보시스템감리사/ 시스존 블로그 운영자

You may also like...

페이스북/트위트/구글 계정으로 댓글 가능합니다.