[스트리밍] 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/
2 Responses
… [Trackback]
[…] Here you will find 24812 additional Info to that Topic: nblog.syszone.co.kr/archives/3131 […]
… [Trackback]
[…] Read More to that Topic: nblog.syszone.co.kr/archives/3131 […]