yoursyun
ANT 사용 기초 본문
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"?>
\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의 위치를 기준으로 라는 뜻입니다.
- default는 ant에 매개변수 없이 (말그대로 ant 엔터) 실행할 타겟 (main() 같은거죠) 이름입니다.
- basedir 은 build.xml의 위치를 기준으로 라는 뜻입니다.
<!-- property 파일 지정 -->
<property file="build.properties" />
- 아까 만든 properties 파일이 있습니다. 아래 프로퍼티가 있는데요. 아래 내용을 build.properties 에넣고 실행 할 수 있습니다. 복사 붙여넣기는 아닙니다.
<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" />
- 위에서 설명한 각 폴더의 위치에대한 이름 설정 그리고 위치 설정 값들입니다. (각각의 위치를 참조하여
컴파일 복사 작업을 할것 입니다.)
<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 에 위치를 잡아 놓았습니다.
<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" />
<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>
<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>
<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>
반응형