Apache Ant build 활용, 자바 컴파일 매크로 : JAVA Build
Ant 는 apache 그룹의 오픈프로젝트이다. 개미가 집을 짓는 것 처럼, Ant 를 이용해 다이나믹한 빌드를 수행할 수 있다.
자바 컴파일을 위해 주로 사용하는 데, Ant 에서 제안하는 가이드라인에 따라 build.xml 을 완성하여, ant 를 실행해 빌드를 수행하게 된다. 매크로프로그램이랄까? 귀찮은 컴파일을 이클립스를 이용하듯이 말이다.
Ant 설치
아파치 그룹에 접속하여 Ant 프로젝트안에 있는 바이너리를 다운 받는 다. 현재(2009년 5월 16일) 최신버전은 1.7.1 이다
Ant 공식사이트 : http://ant.apache.org
Ant 1.7.1 받기 : http://ant.apache.org/bindownload.cgi
원하는 위치에 저장하고 압축을 풀어 준다. 아래부터 환경변수 설정법을 설명한다.
Ant 경로 : c:\ant , JAVA 경로 : c:\jdk-1.5.0.05 경우의 예
Windows
set ANT_HOME=c:\ant
set JAVA_HOME=c:\jdk-1.5.0.05
set PATH=%PATH%;%ANT_HOME%\bin
Linux , Unix (bash)
export ANT_HOME=/usr/local/ant
export JAVA_HOME=/usr/local/jdk-1.5.0.05
export PATH=${PATH}:${ANT_HOME}/bin
Linux , Unix (csh)
setenv ANT_HOME /usr/local/ant
setenv JAVA_HOME /usr/local/jdk/jdk-1.5.0.05
set path=( $path $ANT_HOME/bin )
Ant 셋팅이 모두 완료되었으면, 테스트는 필수조건. 아래와 같이 처리된다면 성공.
build.xml 파일이 없어 Ant 수행과정이 실패되었다.
build.xml 를 이용한 Ant Build 구현
<?xml version="1.0" encoding="UTF-8"?> <!-- @ 프로젝트 설정 name : 프로젝트 명 basedir : 프로젝트 경로 default : Ant 수행 명령이 없을 경우 기본 수행 명령어 --> <project name="sample" basedir="."> <!-- @ 프로퍼티 설정 name : 프로퍼티 명 value : 프로퍼티 값 --> <property name="src.dir" value="${basedir}/WEB-INF/src"/> <property name="classes.dir" value="${basedir}/WEB-INF/classes"/> <property name="jar.dir" value="${basedir}/jar"/> <!-- @ jar 폴더 삭제 명령 name : 명령어 dir : 대상 경로 --> <target name="delete"> <delete dir="${basedir}/jar"/> </target> <!-- @ 자바 컴파일 name : 명령어 srcdir : 소스 경로 destdir : 클래스 경로 --> <target name="compile"> <javac srcdir="${src.dir}" destdir="${classes.dir}"/> </target> <!-- @ 자바 클래스 jar 압축 name : 명령어 mkdir : 폴더 삭제 , dir : 대상 경로 destfile : 생성될 경로 basedir : 대상 경로 --> <target name="jar" depends="compile"> <mkdir dir="${jar.dir}"/> <jar destfile="${jar.dir}/apache-ant.jar" basedir="${classes.dir}" /> </target> <!-- @ 특정 경로 자바 클래스 jar 압축 name : 명령어 includes : 특정 클래스 만 압축할 때 --> <target name="use-jar" depends="compile"> <mkdir dir="${jar.dir}"/> <jar destfile="${jar.dir}/apache-ant.jar" basedir="${classes.dir}" includes="${make}" /> </target> <!-- 작업 명령 --> <target name="javac" depends="compile"/> <target name="javac-jar" depends="delete,jar"/> <target name="make-jar" depends="delete,use-jar"/> </project>
-- 자바 컴파일
ant javac
-- 자바 클래스 jar 압축
ant javac-jar
-- 특정 클래스 jar 압축
ant -Dmake=org/json/**/* meke-jar
ant -help 를 통해 도움말을 볼 수 있다.
** 내용추가
20100421 - 위 내용을 이해했으면 Ant build 소스만봐도 이해할 것 같아... 최근에 만든 빌드소스를 첨부합니다. ;; 점차 Ant를 알아가다보니 중간에 내용을 첨부하기가 좀 그렇네요;
-- 클래스 패치 걸기
<!-- 라이브러리 -->
<path id="class-path">
<pathelement path="${tomcat.lib.dir}/servlet-api.jar"/>
<pathelement path="${tomcat.lib.dir}/jsp-api.jar"/>
<pathelement path="${java.lib.dir}/tools.jar"/>
<fileset dir="${lib.dir}">
<include name="*.jar"/>
</fileset>
</path>
다음은 javac 엘리먼트에 사이에 넣어주면된다.
<javac ~~~~생략~>
<!-- 라이브러리 -->
<classpath refid="class-path" />
</javac>
-- 파일 복사하기
target 사이에 넣어주면 된다.
<target ~~~생략>
<javac ~~~ 생략 />
<!-- 파일 복사 : 설정파일들 (java 제외) -->
<copy todir="${classes.dir}">
<fileset dir="${src.dir}" excludes="**/*.java" />
</copy>
</target>
-- bat 실행파일
set JAVA_HOME=C:\Program Files\Java\jdk1.5.0_06
ant -buildfile=build.xml -logfile=debug.log javac
로그 파일이 필요없을 경우 logfile 제거하기.
-- sh 실행파일
cd 빌드경로
exec ant javac
** 실행결과 ( 위 빌드과정과 관련이 없는 결과입니다.)
'개발노트 > JAVA' 카테고리의 다른 글
자바 다양한 형변환. 그리고 아스키 코드 String char int : JAVA (2) | 2009.12.01 |
---|---|
자바 XML 제어 라이브러리 XStream : JAVA (2) | 2009.11.21 |
JAVA Model getter , setter 소스코드생성하는 툴 (0) | 2009.04.14 |
원하는 패턴의 날짜 구하기 : JAVA (2) | 2009.03.18 |