<!--
=====================================================================================
1. 프로젝트: 반드시 빌드 파일이 있어야 한다. 빌드 파일의 이름은 기본 값으로 build.xml이다.
빌드 파일은 타겟(target)의 집합체이다.
- name: 프로젝트 이름 (타입: String, 필요여부: 아니오)
- default: 지정한 타겟이 없을 때 자동적으로 실행할 타겟 명 (타입: String, 필요여부: 예)
- basedir: 경로 지정의 기본이 되는 디렉토리 (타입: Path, 필요여부: 아니오)
2. 타겟: 빌드 파일은 타겟의 집합체이다. 타겟은 다른 타겟과 의존성을 가질 수 있다.
태스크의 예로 java, javac, jar, mkdir, copy 등이 있다.
- name: 타겟의 이름
- depends: 의존성이 있는 타겟 목록을 ','로 구분한다.
- if: 타겟이 실행되기 위해서 설정할 프로퍼티 값
- unless: 타겟이 실행되기 위해서 설정하지 말아야 할 프로퍼티 값
- description: 타겟의 설명
3. 태스크: 특정한 일을 수행하는 컴포넌트.
1) <Java> 태스크: 실행 중인 VM에서 자바 애플리케이션 클래스를 실행하는 태스크
- classname : 실행할 ajva 클래스 이름 (String, 필수)
- jar : 실행할 클래스가 포함된 jar 파일의 위치 (Path, 필수)
- fork : true면 다른 VM에서 실행 (Boolean)
- classpath : 애플리케이션이 실행될 때 클래스 패스 (Path)
- classpathref : 레퍼런스에 의해 이용될 클래스 패스 (Reference)
- jvm : 자바 VM을 시작할 때 사용하는 명령어로 기본값은 "java" (String)
- maxmemory : fork가 true일 때 할당되는 총 메모리 (String)
- failonerror : true면 반환코드가 0이 아닌 경우로 빌드 프로세스가 중지한다. (Boolean)
- dir : fork가 true일 때 VM을 호출하는 디렉토리 (File)
- output : 결과물을 기록할 파일명 (File)
- append : true면 결과물을 존재하는 파일에 덧붙이고, 그렇지 않다면 덮어 쓰기한다. (Boolean)
- timeout : 주어진 시간에 종료되지 않는 경우에 강제 종료한다. fork가 true인 경우 권장한다. (Long)
- <arg> : java 클래스의 인자를 추가 (하위 엘레먼트)
- <jvmarg> : fork가 true인 경우 java 클래스의 인자를 추가 (하위 엘레먼트)
- <sysproperty> : 클래스에 필요한 시스템 프로퍼티를 추가 (하위 엘레먼트)
- <classpath> : 애플리케이션 실행 시에 필요한 클래스패스를 추가 (하위 엘레먼트)
- <env> : fork가 true인 경우 환경변수를 추가 (하위 엘레먼트)
2) <Javac> 태스크: java 소스를 컴파일하는 태스크로, java 소스와 패키지는 회귀적으로
컴파일된다. 아직 컴파일이 되지 않은 java 파일이 존재하거나 혹은
.class 파일이 Java 파일보다 이전에 컴파일된 클래스일 때 컴파일한다.
java 소스의 이름과 클래스 파일 이름을 비교하여 컴파일할지를 결정한다.
- scdir : java 소스의 위치 (Path, 필수)
- destdir : 클래스 파일 생성 위치 (Path)
- includes : ',' 나 [space]로 구분한 java 파일을 포함한다. 생략시에 모든 java 파일을
컴파일한다. wildcard(*) 사용 가능 (String)
- includesfile : 포함할 파일 명으로 wildcard 사용가능 (String)
- excludes : ','나 [space]로 구분한 java 파일을 제외한다. wildcard 사용 가능 (String)
- excludesfile : 제외할 파일명으로 wildcard 사용가능 (String)
- extdirs : 컴파일 시 필요한 확장 디렉토리 (Path)
- classpath : 클래스 패스 (Path)
- sourcepath : 소스 패스 경로 (Path)
- bootclasspath: boot 클래스 패스 경로 (Path)
- debug : 소스가 디버그 정보로 컴파일될 것인지의 여부를 지정한다. 기본값: off (Boolean)
- optimize : 최적화 상태로 컴파일한다. 기본값: off (Boolean)
- deprecation : 소스가 deprecation 정보로 컴파일될 것인지의 여부를 지정한다. 기본값: off (Boolean)
- target : 컴파일 될 특정 VM 버전 (String)
- compiler : 컴파일러 지정 (String)
- listfiles : 컴파일 되는 소스의 리스트 출력 (Boolean)
- <src> : 소스 경로 추가 (하위 엘레먼트)
- <classpath> : 클래스 패스 추가 (하위 엘레먼트)
- <sourcepath> : 소스 패스 추가 (하위 엘레먼트)
- <bootclasspath> : boot 클래스패스 추가 (하위 엘레먼트)
- <extdirs> : exdirs 경로 추가 (하위 엘레먼트)
3) <Jar> 태스크: 클래스와 자원을 묶어 jar 파일을 생성하는 태스크
- destfile : 생성되는 JAR 파일 (String, 필수)
- basedir : jar로 압축할 파일의 디렉토리 (Path)
- compress : 파일을 압축할지의 여부를 지정한다. 기본값 : true (Boolean)
- encoding : 파일 이름의 인코딩 방식을 지정한다. 기본값 : UTF8 (String)
- filesonly : 파일만 저장한다. 기본값 : false (Boolean)
- manifest : 사용할 manifest 파일 (String)
- update : true면 update, 아니면 덮어쓰기한다. 기본값 : false (Boolean)
- <fileset> : 파일의 집합을 추가 (하위 엘레먼트)
- <metainf> : 이 fileset에 포함된 모든 파일은 jar 파일의 META INF 디렉토리에 추가된다. (하위 엘레먼트)
- <manifest> : jar 파일의 manifest 파일을 빌드 파일 내부에서 제공한다. (하위 엘레먼트)
4) <JavaDoc> 태스크: JAVA 소스 문서를 생성하는 태스크
- sourcepath : 소스 파일의 경로 (Path, 필수)
- sourcefiles : ','로 구분되는 소스 파일 (String, 필수)
- destdir : 문서의 생성 위치 (Path, 필수(doclet이 없는 경우))
- packagenames : ','로 구분되는 패키지 명 (String)
- excludepackagenames : ','로 구분되는 문서 생성 시 제외할 패키지 명 (String)
- packagelist : 처리할 패키지를 포함하는 파일 명 (String)
- classpath : javadoc을 실행시키기 위한 클래스 패스 (Path)
- overview : 개요 문서 명시 (File)
- access : 처리범위 : public, protected, private (String)
- public : public 클래스와 멤버 변수 표시 (Boolean)
- protected : public과 protected 클래스와 멤버 변수 표시 (Boolean)
- private : 모든 클래스와 멤버변수 표시 (Boolean)
- version : @version 문구 포함 (Boolean)
- use : 클래스와 패키지의 use 페이지 생성 (Boolean)
- author : @author 문구 포함 (Boolean)
- windowtitle : HTML 문서의 <title>에 위치할 값 (String)
5) <mkdir> 태스크: 디렉토리를 생성하는 태스크
- dir : 생성할 디렉토리 (File, 필수)
6) <copy> 태스크: 파일이나 fileset에서 지정한 파일, 디렉토리 등을 복사하는 태스크. 기본값으로
복사할 위치에 없는 파일이거나 혹은 변경된 파일인 경우에 복사를 하며,
무조건 덮어쓰기를 하기 위해서는 명시적으로 overwrite 속성을 true로 해주어야 한다.
- file : 복사할 파일 (File, 필수)
- tofile : 대상 파일 (File, 필수)
- todir : 대상 디렉토리 (File, 필수)
- overwrite : 대상 파일 존재 시에 덮어쓰기 한다. 기본값: false (Boolean)
- includeemptydirs : 빈 디렉토리도 포함해서 복사한다. 기본값: true (Boolean)
- filtering : true면 필터링을 수행한다. 기본값: false (Boolean)
- <fileset> : 복사할 파일의 집합을 추가한다. todir 속성이 있어야 한다. (하위 엘레먼트)
- <filterset> : 복사되는 파일 내부에서 필터링을 추가한다. (하위 엘레먼트)
- <mapper> : 복사 대상 파일의 이름을 변경한다. (하위 엘레먼트)
7) <delete> 태스크 : 파일이나 파일을 포함한 디렉토리 혹은 fileset으로 추가된 파일이나 디렉토리를
삭제하는 태스크다. 파일이 없는 빈 디렉토리는 삭제되지 않는다.
빈 프로젝트도 삭제할 때는 includeEmptyDirs 속성값으로 true를 준다.
- file : 삭제할 파일명 (File, 필수)
- dir : 삭제할 디렉토리 (File, 필수)
- includeemptydirs : 빈 디렉토리도 삭제할지 여부를 지정한다. 기본값: false (Boolean)
- <fileset> : 삭제할 파일의 집합 추가 (하위 엘레먼트)
8) <Genkey> 태스크 : key 저장소에 key를 생성하는 태스크
- alias : key의 별칭 (String, 필수)
- storepass : key 저장소의 무결성을 위한 패스워드. 6자리 이상! (String, 필수)
- keystore : key 저장소의 위치 (Path)
- storetype : key 저장소의 타입 (String)
- keypass : storepass와 다르다면 private key의 패스워드 (String)
- dname : 엔티티를 구별하는 이름 (String, 필수)
- <dname> : 엔티티를 구별하는 이름 (하위 엘레먼트)
9) <signjar> 태스크 : javasign 명령어를 사용하여 JAR 파일이나 zip 파일을 서명하는 태스크
(하번도 서명된 적 없는 파일에 대해서만 실행된다)
- jar : 서명할 jar 파일 (File, 필수)
- alias : 서명하는데 필요한 별칭 (String, 필수)
- storepass : key 저장소의 무결성을 위한 패스워드 (String, 필수)
- keystore : key 저장소의 위치 (Path)
- storetype : key 저장소의 타입 (String)
- keypass : strepass와 다르면, private key의 패스워드 (String)
- sigfile : .SF/ .DSF 파일의 이름 (String)
- signedjar : 서명된 jar 파일의 이름 (String)
- <fileset> : 서명할 jar 파일의 집합 추가 (하위 엘레먼트)
10) <ejbjar> 태스크 : EJB JAR 파일을 빌드하는 태스크
- descriptordir : EJB 배치 스크립터에 의해 스캔되는 배치 디렉토리 (File)
- srcdir : bean을 구성하는 .class 파일 및 EJB JAR에 포함될 모든 .class 파일이
위치한 소스 디렉토리 (File, 필수)
- destdir : <ejbjar> 태스크를 통해 생성되는 JAR 파일이 위치할 대상 디렉토리 (File, 필수)
- naming : 배치 스크립터에서 생성된 배포 파일의 이름을 결정한다. (String)
- basejarname: 배치 스크립터에서 이름이 정해지지 않은 경우, 배포 파일의 이름 (String)
- <borland> : Borland 애플리케이션 서버 4.5와 5.x (하위 엘레먼트)
- <iplanet> : IPlanet 애플리케이션 서버 6.0 (하위 엘레먼트)
- <jboss> : JBoss (하위 엘레먼트)
- <jonas> : JOnAS 2.4x와 2.5 (하위 엘레먼트)
- <weblogic> : Weblogic 5.1 ~ 7.0 (하위 엘레먼트)
- <websphere> : IBM Websphere 4.0 (하위 엘레먼트)
=====================================================================================
-->
[build.xml]
<?xml version="1.0" encoding="euc kr"?>
<project default="main" basedir=".">
<!--
=====================================================================================
properties: build.xml에서 사용하는 속성 값을 설정한다.
=====================================================================================
-->
<property name="name" value="ex"/>
<property name="version" value="1.0"/>
<property name="src.dir" value="src"/>
<property name="build.dir" value="build"/>
<property name="classes.dir" value="${build.dir}/classes"/>
<property name="jar.file" value="${build.dir}/${name}.jar"/>
<property name="dist.dir" value="dist"/>
<property name="dist.file" value="${build.dir}/${name} ${version}"/>
<!--
=====================================================================================
compile 타겟: Java 파일을 컴파일한다.
=====================================================================================
-->
<target name="compile">
<mkdir dir="${build.dir}" />
<mkdir dir="${classes.dir}" />
<javac
srcdir="${src.dir}"
destdir="${classes.dir}"
></javac>
</target>
<!--
=====================================================================================
jars 타겟: 컴파일한 클래스 파일을 jar로 묶는다.
=====================================================================================
-->
<target name="jars" depends="compile">
<jar
jarfile="${jar.file}"
basedir="${classes.dir}"
></jar>
</target>
<!--
=====================================================================================
distibution 타겟: 배포본을 만든다.
=====================================================================================
-->
<target name="dist" depends="jars">
<mkdir dir="${dist.dir}"/>
<zip
destfile="${dist.file}.zip"
basedir="${build.dir}"
includes="*.jar"
/>
</target>
<!--
=====================================================================================
main 타겟: 사용자가 타겟을 지정하지 않은 경우, 기본 값으로 지정되는 타겟이다.
=====================================================================================
-->
<target name="main" depends="jars"/>
<!--
=====================================================================================
clean 타겟: 이전의 컴파일한 클래스 파일과 배포본을 지운다.
=====================================================================================
-->
<target name="clean">
<delete dir="${build.dir}"/>
<delete dir="${dist.dir}"/>
</target>
<!--
=====================================================================================
all 타겟: 모든 작업을 수행한다.
=====================================================================================
-->
<target name="all" depends="clean, dist"/>
</project>
'IT_Programming > Dev Tools' 카테고리의 다른 글
[펌] Ant 소개 (by LoveLazur) (0) | 2009.01.30 |
---|---|
[VS.NET 2005 _ VC++] deprecated 관련 경고 메시지 나타나지 않게 하기 (0) | 2008.12.08 |
[펌] vs 2005 디버깅 안 될때... (0) | 2008.11.20 |
[HTML] 소스보기 프로그램을 메모장이 아닌 다른 프로그램으로 바꾸기 (0) | 2008.07.31 |
[펌] Javascript 개발시에 유용한 Editplus 사용자도구 설정 (0) | 2008.06.29 |