yoursyun

ANT 사용 기초 본문

environment/java

ANT 사용 기초

yoursyun 2009. 1. 6. 16:29

1. 우선 ant 툴을 다운로드 설치 합니다.  http://ant.apache.org/index.html 에서 최신 ant를 다운 받을 수 있습니다.

2. 환경변수의 classpath와 path에 각각 %ANT_HOME%\lib와 %ANT_HOME%\bin을 추가 합니다.

3. ant를 실행하면 어쩌구 뜨면 올바르게 셋팅 완료 된겁니다.

4. 2개 파일을 생성 합니다. 작업 디렉토리에
   bulid.xml, build.property (build property는 없어도 작업이 가능 합니다만, 각 위치 설정 할때 편리하게 설정만 바꿔서 이용 할 수 있기 때문에 만들어 두는게 좋습니다. )

* 저의 경우 작업 위치를 이렇게 꾸몄습니다.
드리이브/폴더/폴더/
D:\JSP\ 폴더에 bulid.xml, build.property 를 생성 하였습니다. 그리고 하위 디렉토리로.
\classes - 컴파일 된 클래스
\etc        - web.xml 등 서버 설정 파일
\lib         - 각종 컴파일 참조 라이브러리 위치
\src        - java 소스 파일
\web      - 웹 컨텐츠 (이미지, html, js, jsp 등등....)
\WEB-INF  - 배포 위치

위의 모습을 기억 하셔야 build.xml 에 위치가 왜 저모양인지 알 수 있습니다. (외우라는 뜻이 아닙니다.)

5. 아래 build.xml 입니다. 음 이것도 길군요 .... 하지만 모양새는 가장 기본적인 행위만 할수 있도록 되어있습니다. (제가 잘 모르거든요)

아래 xml파일을 읽기 전에 java 컴파일 -classpath, -d 옵션의 의미를 알고 계셔야 합니다.

<?xml version="1.0" encoding="euc-kr"?>
<project name="myTest" default="compile" basedir=".">
- default는 ant에 매개변수 없이 (말그대로 ant 엔터) 실행할 타겟 (main() 같은거죠) 이름입니다.
- basedir 은 build.xml의 위치를 기준으로 라는 뜻입니다.
 <!-- property 파일 지정 -->
 <property file="build.properties" />
- 아까 만든 properties 파일이 있습니다. 아래 프로퍼티가 있는데요. 아래 내용을 build.properties 에넣고 실행 할 수 있습니다. 복사 붙여넣기는 아닙니다.
 <!-- property 설정 -->
 <property name="src.dir" value="${basedir}/src" />
 <property name="web.dir" value="${basedir}/web" />
 <property name="lib.dir" value="${basedir}/lib" />
 <property name="etc.dir" value="${basedir}/etc" />
 <property name="classes.dir" value="${basedir}/classes" />
- 위에서 설명한 각 폴더의 위치에대한 이름 설정 그리고 위치 설정 값들입니다. (각각의 위치를 참조하여
컴파일 복사 작업을 할것 입니다.)
 <!-- compile 사용할 classpath -->
 <path id="compile.classpath">
  <pathelement location="${classes.dir}" />
  <fileset dir="${lib.dir}">
   <include name="*.jar" />
  </fileset>
  <fileset dir="${lib.home}">
   <include name="*.jar" />
  </fileset>
 </path>
- 보시다시피 컴파일시 참조 위치 입니다. pathelement 는 java compile 시 classpath 옵션 을 셋팅 하는 역활 입니다. 그리고 참조 라이브러리가 있는 경우 fileset 을 이용 하시면 됩니다.
위에 프로퍼티 설정 하지 않은 <fileset dir="${lib.home}"> 이 있는데요. 이것은 build.property 에 위치를 잡아 놓았습니다.

 <!-- target 설정 mkdir and copy web contents -->
 <target name="prepare">
  <mkdir dir="${classes.dir}" />
  <mkdir dir="${build.home}" />
  <mkdir dir="${build.home}/WEB-INF" />
  <mkdir dir="${build.home}/WEB-INF/classes" />
  <copy todir="${build.home}">
   <fileset dir="${web.dir}" />
  </copy>
  <copy todir="${build.home}/WEB-INF">
   <fileset dir="${etc.dir}" />
  </copy>
 </target>
 
 
- 위에서 설정된 내용을 이용 컴파일을 진행하고 배포위치로 컴파일된 클래스를 복사합니다.
 
 <!-- target 설정 - compile class and copy dest-->
 <target name="compile" depends="prepare">
  <javac srcdir="${src.dir}" destdir="${classes.dir}">
   <classpath refid="compile.classpath" />
  </javac>
  <copy todir="${build.home}/WEB-INF/classes">
   <fileset dir="${classes.dir}" excludes="**/*.java" />
  </copy>
 </target> 
</project>







반응형