본문 바로가기

Dev.../플밍 관련 자료

[펌] ANT (하): Ant 무엇에 쓰는 물건인고?

등록: 한빛미디어(주) (2002-06-04 11:11:38)

 

저자: 한빛리포터 김영익

본 기사는 자바 빌드 도구인 Ant와 이를 이용한 실전예제를 다루는 기사이다. Ant는 실제로 어떤 프로그램을 개발하느냐에 상관없이 사용되는 빌드 도구로 얼마나 개발을 편리하게 해주느냐가 관건이지 프로그램이나 프로젝트와는 특별한 관계가 없다. 본 기사는 모든 자바 개발자를 대상으로하여 작성되었다. 초급자에게는 앞으로 진행할 프로젝트나 프로그램을 편하게 개발할 수 있게 해주며, 중급 이상자에게는 더욱 더 게을러질 수 있는(?) 기회를 제공해 줄 것이다. 본 기사의 상편을 보지 못한 독자나 Ant의 기본 개념을 모르는 독자들은 「ANT 상편: Ant 무엇에 쓰는 물건인고?」를 먼저 읽어보기 바란다.

1. copy 예제

다음과 같은 경우를 가정해보자.

나는 지금 웹 프로그램을 개발 중이다. 웹 컨테이너로는 톰캣을 사용하고 있으며 MVC 모델을 사용하기 때문에 JSP와 서블릿, 일반 자바 클래스를 만들고 있다. 그런데 일반 자바 클래스와 서블릿은 컴파일해서 클래스 파일들만 톰캣 폴더에 위치 시키면 된다고 알고 있다. 소스는 물론 다른 폴더에 있기 때문에 컴파일할 때마다 클래스 파일들을 톰캣 폴더에 복사하는 것이 여간 귀찮은 작업이 아니다. 어떻게 하면 한번에 이 문제를 해결할 수 있을까?
앞에서 사용한 빌드 파일을 살짝 변경하면 문제를 간단히 해결할 수 있다. Ant에서 지원하는 'copy' 기능을 사용하여 클래스 파일들을 다른 폴더로 간단하게 복사만 하면된다. 그리고 빌드 파일 사이에 다음 부분을 추가한다. 역시 주석문은 제외하고 사용하길…
…<property name="tomcat.dir" value="D:/Tomcat 4.0/webapps/ROOT/WEB-INF" />…<!--클래스 파일들을 톰캣 폴더에 복사--><target name="tomcat" depends="compile" >  <copy todir="${tomcat.dir}/classes" >    <fileset dir="${classes.dir}" >    </fileset>  </copy></target>
톰캣 폴더에도 클래스 파일들이 복사된 것을 확인할 수 있다.

2. Hello EJB 예제

이번에는 EJB를 위한 build.xml 예제를 살펴보도록 하자. 우리는 웹로직 6.1 버전을 위한 빌드 파일을 다루지만, 다른 EJB 컨테이너들도 Ant를 이용하는 제품들이 있으므로 하나만 잘 익혀두면 다른 컨테이너에서도 조금만 수정해서 쉽게 사용할 수 있다. 이 build.xml은 EJB 소스를 컴파일 한 후, jar로 필요한 파일들을 묶고, ejbc를 수행한 후 디플로이하기 위해 EJB서버의 특정 디렉토리로 보내는 일련의 작업을 수행한다.
<project name="HelloEJB" default="all" basedir="."><!-- Build에 힐요한 전역 변수를 설정한다. --><!-- 필요 없는 부분은 삭제한다. -->  <property environment="env"/>  <property file="../../../../examples.properties"/>  <property name="source" value="."/>  <property name="build" value="${source}/build"/>  <property name="dist" value="${source}/dist"/>    <!-- all이라는 타겟을 수행하기 위해서는 clean, init등이 실행 성공 해야 한다. -->  <target name="all" depends="clean, init, compile_ejb, jar_ejb, ejbc"/><!-- build를 하기 위해 폴더 생성 및 필요한 파일을 복사한다. -->  <target name="init">    <mkdir dir="${build}"/>    <mkdir dir="${build}/META-INF"/>    <mkdir dir="${dist}"/>    <copy todir="${build}/META-INF">      <fileset dir="${source}">        <include name="*.xml"/>        <exclude name="build.xml"/>      </fileset>    </copy>  </target>  <!-- javac를 수행하여 클래스 화일을 생성한다. 컴파일에 필요한 대상 EJB의 홈 및  리모트 인터페이스, 빈 클래스 등을 클래스 패스에 추가한다. -->  <target name="compile_ejb">    <javac srcdir="${source}" destdir="${build}" includes="*.java"       classpath="${WL_HOME}/lib/weblogic_sp.jar;${WL_HOME}/lib/weblogic.jar;${source}/helloClient.jar;"/>  </target><!-- 디플로이먼트 디스크립터 XML파일과 클래스 파일들을 jar로 묶는다. ejb-client.jar를 Class-path로 설정한 manifest 파일을 설정 할 수 있다.-->  <target name="jar_ejb" depends="compile_ejb">    <jar jarfile="${dist}/std_ejb20_basic_tester.jar" basedir="${build}"          manifest="ejb_MANIFEST.MF">    </jar>     </target>  <!-- 디플로이 가능한 jar화일을 만들기 위해 ejbc를 수행한다. -->  <target name="ejbc" depends="jar_ejb">    <java classname="weblogic.ejbc" fork="yes">      <sysproperty key="weblogic.home" value="${WL_HOME}"/>      <arg line="-compiler javac ${dist}/std_ejb20_basic_tester.jar ${APPLICATIONS}/ejb20_basic_tester.jar"/>      <classpath>        <pathelement path="${WL_HOME}/lib/weblogic_sp.jar;${WL_HOME}/lib/weblogic.jar"/>      </classpath>    </java>  </target><!-Build 후 필요없는 디렉토리를 삭제한다. -->  <target name="clean">    <delete dir="${build}"/>    <delete dir="${dist}"/>  </target></project>
3. JBuilder에서 AntRunner 사용하기

Ant 문서에 보면 다른 여러 개발 도구들(예를 들어 JBuilder, Visual Age for Java 등)에서 Ant와 어떻게 연동하는지에 대해서도 나와 있다. 이번에는 JBuilder에서 Ant를 이용하여 프로젝트를 쉽게 빌드 하는 법을 살펴보자.

Ant: The Definitive Guide
3.1 AntRunner 설치

우선 JBuilder에서 Ant를 사용하기 위해서는 AntRunner라는 프로그램을 구해야 한다. 프로그램에 소요되는 비용은 걱정할 필요가 없다. 이것도 역시 오픈 소스이기 때문에 무료로 제공된다. AntRunner는 다음 링크에서 다운로드 받을 수 있다.

http://sourceforge.net/projects/antrunner/

우리는 AntRunner 1.3 버전을 사용할 것이고, 테스트 해 본 결과로는 JBuilder 5 또는 6에서 잘 작동 했다. 참고로 JBuilder 4에서도 잘 동작한다고 사이트에는 나와 있다. antrunner_v1.3-tool.zip 파일을 다운 받은 후 압축을 풀어서 생긴 파일을 모두 JBuilder설치 폴더 밑의 \lib\ext 폴더 안에 넣어 두고 antrunner.config을 에디터로 열어서 다음과 같이 편집한다.
# AntRunner configuration# Ant를 설치한 폴더의 위치에 맞게 설정하면 된다addjars C:\dev\tools\jakarta-ant-1.4.1\lib
그리고 이제 JBuilder를 실행한다. 실행하면 툴바에 아래 그림과 같은 개미 머리 버튼이 보일 것이다. 왼쪽의 버튼이 Ant 실행 버튼이고, 오른쪽 버튼은 build.xml 파일이 변경되었을 경우 다시 불러오는 버튼이다.

메뉴에서 Tools→IDE Options를 선택하면,

다이얼로그 창이 뜨는데 Ant 배치 파일 위치를 지정한다.

다시 메뉴에서 Project→Configure Ant를 선택하고,

다이얼로그에서 buil.xml 파일의 위치를 지정한다.

이제 설정은 모두 끝났다. 이제부터는 실제로 빌드를 해보도록 하자.

3.2 AntRunner를 이용한 빌드

그럼 이제 JBuilder 의 고유한 빌드 기능이 아닌 AntRunner의 빌드 기능을 사용해 보도록 한다. 빌드는 앞에 그림에서 나온 것처럼 빌드 버튼을 누르면 default로 설정된 타겟이 실행 된다. 다른 타켓을 실행하고 싶으면 아래 그림에서처럼 빌드 버튼 옆의 리스트 버튼을 누르면 타겟 리스트가 나오고, 그때 원하는 타겟을 선택해서 실행할 수 있다. 볼드체로 진하게 나온 것이 기본으로 실행이 되는 default 타겟이다.

빌드 생성 결과는 어떻게 알 수 있는가? 그 결과는 맨 아래에 있는 메시지 창에 나온다. 소스코드에 javadoc을 위한 주석을 모두 달았더니 HTML API 문서도 생성되었다.

4. 마무리

지금까지 이 기사에 나온대로 열심히 따라한 독자들에게 감사말씀을 올린다. Ant는 본 기사에 소개한 기능 외에도 다른 기능들이 많이 있으니 열심히 공부해서 다른 사람들과도 공유해보도록 하자. 이제 Ant를 배웠으니 귀찮은 빌드 작업은 개미에게 맡기고 코드나 작성하면서 노는 베짱이가 되는 것은 어떻겠는가……

5. 참고 자료