# project 태그
1) name : 프로젝트의 이름
2) default : Ant를 실행할때 target을 지정하지 않은 경우 기본적으로 사용할 target (필수)
3) basedir : 경로 계산할때의 기준 디렉토리. 지정하지 않은 경우 현재 디렉토리가 basedir로 사용된다. basedir 프로퍼티의 값으로도 사용된다.
# target 태그
1) name : 타켓의 이름 (필수)
2) depends : 이 타겟이 의존하고 있는 타겟의 목록. 각 타켓의 이름은 ,(콤마) 로 구분한다.
3) if : 지정한 프로퍼티가 설정되어 있는 경우 이 타겟을 수행한다.
4) unless : 지정한 프로퍼티가 설정되어 있지 않은 경우 이 타겟을 수행한다.
5) description : 타겟이 수행하는 기능에 대한 설명
# ant 경로 규칙
1) * : 0개 또는 그이상의 글자가 매칭
2) ? : 한글자와 매칭
3) ** : 다계층을 나타냄 예) dir/**/A => dir/dir1/A, dir/dir2/A, dir/dir1/dirA/A 다 포함.
4) / 또는 \ 으로 끝날 경우 : /** 또는 \** 과 동일
# includes 속성 : 포함시킬 파일의 목록 (include 태그, includesfile 속성으로 사용 가능)
# excludes 속성 : 제외시킬 파일의 목록 (exclude 태그, excludesfile 속성으로 사용 가능)
# excludes 속성 명시 여부에 상관없이 제외 되는 것들 : 제외 시키고 싶지 않을 경우 defaulteexcludes = "no" 설정
- **/*~, **/#*#, **/.#*, **/%*%, **/._*
- **/CVS, **/CVS/**, **/.cvsignore
- **/SCCS, **/SCCS/**
- **/vssver.scc
- **/.svn, **/.svn/**
- **/.DS_Store
# fileset 태그 : 파일 집합
1) dir : 파일 집합을 표시할 때의 루트 디렉토리 (dir 또는 file 중 한개 반드시 명시)
2) file : 한 개의 파일을 명시할 때 사용하는 속성 (dir 또는 file 중 한개 반드시 명시)
3) casesensitive : 대소분자 구분 여부 (true/false) 기본값 true
4) followsymlinks : 심볼릭 링크를 따라갈지의 여부 (true/false) 기본값 true)
사용 예)
<fileset dir="${basedir}/src" defaultexcludes="no">
<include name="**/*.java"/>
<include name="**/*.properties"/>
<exclude name="**/*.bak"/>
</fileset>
# dir 태그 : 디렉토리 집합
1) dir : 디렉토리 집합을 표시할 때의 루트 디렉토리 (필수)
2) casesensitive : 대소분자 구분 여부 (true/false) 기본값 true
3) followsymlinks : 심볼릭 링크를 따라갈지의 여부 (true/false) 기본값 true)
사용 예)
<dirset dir="" includes="" excludes=""/>
# patternset 태그 : 재사용 가능한 파일 집합
사용 예)
<patternset id="commonJar">
<include name="servlet.jar"/>
<include name="mail.jar"/>
<include name="activation.jar"/>
</patternset>
# path 태그 : 재사용 가능한 경로 목록의 집합
사용 예)
<path id="project.class.path">
<pathelement location="fileupload/WEB-INF/classes"/>
<pathelement path="lib/servlet.jar;lib/commons-fileupload-1.0.jar"/>
</path>
<classpath refid="project.class.path"/>
- location : 하나의 파일 또는 디렉토리 지정
- path : 여러 경로를 지정 (; 또는 : 으로 구분)
# 아래의 build.xml 파일에서 ant makeZip 을 할경우 complie 은 두번이 아닌 한번만 실행되게 된다.
<project name="build" default="makeZip" basedir=".">
<target name="compile"/>
<target name="srcCopy" depends="compile"/>
<target name="classCopy" depends="compile"/>
<target name="makeZip" depends="srcCopy, classCopy"/>
</project>
# property 태그 : property 지정
1) name : 프로퍼티의 이름
2) value : 프로퍼티의 값을 지정 (name 속성 지정시 value 또는 location 둘중 하나 반드시 사용)
3) location : 지정한 경로명의 절대 경로명을 값으로 지정 (name 속성 지정시 value 또는 location 둘중 하나 반드시 사용)
4) resource : 프로퍼티 파일을 읽어 올 때 사용할 자원명을 지정 (name 속성 사용않는 경우 resource, file, environment 중 하나 반드시 사용)
5) file : 지정한 파일로부터 프로퍼티 목록을 읽어 온다 (name 속성 사용않는 경우 resource, file, environment 중 하나 반드시 사용)
6) environment : 환경 변수를 읽어 올때 사용할 접두어를 지정 (name 속성 사용않는 경우 resource, file, environment 중 하나 반드시 사용)
7) classpath : 자원으로부터 프로퍼티 파일을 읽어 올 때 사용할 클래스 패스
8) classpathref : 클래스패스로 사용할 경로를 path 태그 로 부터 가져온다.
9) prefix : resource 또는 file 속성을 사용하여 읽어 온 프로퍼티를 참조할 때 사용할 접두어를 지정한다. 만약 접두어 맨뒤에 "." 가 포함되어 있지 않을 경우, 자동으로 "."이 접두어 뒤에 붙는다.
사용 예)
<property file="${basedir}/buildprop/global.properties"/>
# 기본 프로퍼티 : property 태그 사용하지 않아도 사용 가능한 프로퍼티
- 모든 자바의 시스템 프로퍼티
- basedir : 프로젝트의 기본 디렉토리의 절대 경로. project 태그의 basedir 속성에 명시된 값
- ant.file : 빌드 파일의 절대 경로
- ant.version : Ant 버전
- ant.project.name : 현재 실행주인 프로젝트의 이름. project 태그의 name 속성에 명시된 값
- ant.java.version : Ant 가 발견한 자바 버전.
# javac
1) srcdir : 소스가 위치한 디렉토리 (src 태그로 지정가능. 둘 중 하나 필수)
2) descdir : 생성된 클래스가 위치할 디렉토리를 지정. javac -d 옵션과 동일
3) classpath : 컴파일할 때 사용할 클래스패스 (class 태그로 지정 가능)
4) classapathref : path 태그로 지정한 경로를 클래스패스로 참조
5) encoding : 소스파일의 인코딩을 지정. javac -encoding 옵션과 동일
6) nowarn : 컴파일시 -nowarn 옵션 추가 (on) 기본값은 off
7) deprection : 컴파일시 -deprecation 옵션 추가 (on) 기본값은 off
사용 예)
<javac srcdir="" descdir="">
<classpath>
<fileset>
<patternset refid=""/>
</fileset>
</classpath>
</javac>
# jar
1) destfile : 생성할 jar 파일 지정
2) basedir : jar 파일로 압축할 기본 디렉토리 지정
사용 예)
<jar destfile="${disc}/lib/app.jar" basedir="${build}/classes"/>
# zip
- 기본적으로 jar 사용법와 같이 사용 가능.
- zipfileset 태그를 사용하여 압축되는 파일의 경로명을 변경할 수 있음.
- zipfileset 의 속성
1) prefix : ZIP 파일에 압축될 때 변경되어 들어갈 경로명
2) fullpath : 특정 파일의 변경될 경로를 지정
3) filemode : 유닉스 기반의 시스템에서 압축되는 파일의 모드를 지정. 기본값은 644
4) dirmode : 유닉스 기반의 시스템에서 압축되는 디렉토리의 모드를 지정. 기본값은 775
사용 예)
<zip destfile="${dist}/example.zip">
<zipfileset dir="build/api" prefix="docs/api"/>
<zipfileset dir="${basedir}"includes="chang.log.20031227" fullpath="docs/chagelog.txt"/>
<zipfileset dir="build/classes" prefix="classes"/>
<zipfileset dir="build/src" prefix="src"/>
</zip>
# tar
- 기본 사용 법 : <tar destfile="" basedir=""/>
- tarfileset 태그
- targileset 의 속성
1) mode : 3자리 8진수값. 775 등의 값을 갖는다.
2) username : 파일에 대한 사용자 이름을 지정한다. UID와는 다르다.
3) group : 파일에 대한 그룹 이름을 지정한다. GID와는 다르다.
4) prifix : tar 파일에 압축될 때 변경되어 들어갈 경로명
5) fullpath : 특정 파일의 변경될 경로를 지정
6) preserveLeadingSlashes : 맨 앞의 '/'를 유지할지의 여부를 지정. 기본값 : false
사용 예)
<tar destfile="${dist}/example.tar">
<tarfileset dir="build/api" prefix="docs/api"/>
<tarfileset dir="${basedir}" includes="chage.log.20031227" fullpath="docs/chagelog.txt"/>
<tarfileset dir="build/classes" prefix="classes"/>
<tarfileset dir="build/src" prefix="src"/>
</tar>
<gzip zipfile="${dist}/example.tar.gz" src="${dist}/example.tar"/>
# javadoc
1) sourcepath : 소스 파일의 경로 지정. 하위 디렉토리까지 모두 처리 (sourcepath, sourcepathref, sourcefiles 중 하나는 필수)
2) sourcepathref : path 에서 지정한 경로를 소스 파일의 경로로 사용 (sourcepath, sourcepathref, sourcefiles 중 하나는 필수)
3) sourcefiles : 소스 파일의 목록을 지정. 각 파일은 콤마(,)로 구분 (sourcepath, sourcepathref, sourcefiles 중 하나는 필수)
4) destdir : 결과 파일이 생성될 디렉토리
5) packagenames : 콤마로 구분된 패키지 파일의 목록. 패키지명이 *로 끝날 경우 그 하위 패키지까지 모두 처리한다.
6) excludepackagenames : 문서를 생성하지 않을 패키지의 목록을 지정. 각 패키지는 콤마(,)로 구분. 패키지명이 *으로 끝날 경우 그 하위 패키지까지 모두 제외
7) access : 접근 모드를 지정. public, protected, package, private 중 한 가지 값. 기본값 : protected
8) public : 생성되는 API 문서에 public 클래스와 멤버만 보여준다.
9) protected : 생성되는 API 문서에 protected/public 클래스와 멤버만 보여준다.
10) package : 생성되는 API 문서에 package/protected/public 클래스와 멤버만 보여준다.
11) private : 생성되는 API 문서에 private/package/protected/public 클래스와 멤버만 보여준다.
12) encoding : 소스 파일의 인코딩을 명시.
13) locale : ko_KR과 같이 사용할 로케일을 지정.
14) charset : 생성된 문서를 보여줄 때 사용할 케릭터셋을 지정.
15) version : @version 주석을 포함.
16) author : @author 주석을 포함.
17) nodeprecated : deprecated 정보를 포함하지 않는다.
18) nodeprecatedlist : deprecated 목록을 생성하지 않는다.
19) windowtitle : 문서를 위한 제목을 텍스트로 입력.
20) overview : HTML 문서로부터 개략 문서를 읽어 온다.
21) helpfile : 도움말로 사용할 HTML 파일을 지정.
22) stylesheetfile : 스타일 시트로 사용할 파일을 지정.
23) header : 생성될 HTML 파일의 헤더로 사용될 HTML 코드를 명시
24) footer : 생성될 HTML 파일의 풋터로 사용될 HTML 코드를 명시
사용 예)
<javadoc destdir="{build}/api"
sourcepath="src"
packagenames="javacan.main.*"
excludepackagenames="javacna.main.test.*"
windowtitle="Main 웹 어플리케이션"
encoding="euc-kr" />
# copy
1) file : 복사할 파일을 지정 (fileset으로 복사할 파일 목록을 지정하지 않는 경우 필수)
2) tofile : 복사될 파일을 지정
3) todir : 원본을 복사할 디렉토리를 지정
4) overwrite : 기존 파일 덮어쓰기 여부 (true/false) 기본값 : false
5) preservelastmodified : 원본의 최종 수정 날짜 유지 여부(true/false) 기본값 : false
6) includeEmptyDirs : 텅빈 디렉토리도 복사할지의 여부(true/false) 기본값 : true
사용 예)
<copy file="${workspace}/readme.txt.200312" tofile="${build}/readme.txt"/>
<copy file="${workspace}/readme.txt.200312" todir="${build}"/>
<copy todir="${build}/src">
<fileset dir="${workspace}/src"/>
</copy>
# mkdir
사용 예)
<mkdir dir="${build}/webapp/WEB-INF/classes"/>
webapp/WEB-INF 또한 존재 하지 않는 경우 생성
# delete
사용 예)
<delete>
<fileset dir="${build}"/>
</delete>
위의 경우 ${build} 와 그 하위 디렉토리의 모든 파일을 삭제. 그러나 디렉토리는 남아있음.(fileset 은 파일의 집합)
아래와 같이 해주면 디렉토리도 전부 삭제
# ant : 또 다른 빌드 파일의 실행. 여러개의 서브 프로젝트로 구성되어 있을 경우 유용
1) antfile : 사용할 빌드 파일을 지정. 명시하지 않을 경우 build.xml. dir 속성에 주어진 디렉토리에 대해 상대경로
2) idr : 새로운 Ant 프로젝트의 basedir을 지정.
3) target : 수행할 타켓을 지정
4) output : 새로운 Ant 프로젝트의 수행 결과를 저장할 파일을 명시
5) inheritAll : 새로운 Ant 프로젝트에 현재 Ant 프로젝트의 모든 프로퍼티 전달 여부(true/false). 기본값 : true
6) inheritRefs : 새로운 Ant 프로젝트에 현재 Ant 프로젝트의 모든 참조 전달 여부(true/false). 기본값 : true
사용예)
<target name="makeSubProject">
<ant dir="subproject/logging" target="prepare">
<property name="module1.4" value="jdk1.4"/>
</ant>
<ant dir="subproject/common" target="prepare"/>
</target>
# java
1) classname : 실행할 클래스 이름 (classname, jar 둘중 하나 필수)
2) jar : 실행할 jar 파일의 위치 (classname, jar 둘중 하나 필수)
3) classpath : 사용할 클래스패스를 지정
4) classpathref : 미리 지정한 path 태그를 참조
5) fork : 세러은 가상머신에서 클래스 수행 여부 (true/false). 기본값 : false
6) maxmemory : 포크된 가상 머신에 할당할 메모리의 최대 크기를 지정 (fork가 false인 경우 무시)
7) dir : 가상 머신을 호출할 디렉토리 (fork가 false인 경우 무시)
사용 예)
<java classname="javacan.main.prepare.TableInitilizer">
<classpath>
<pathelement path="${java.class.path}"/>
</classpath>
<sysproperty key="module" value="test"/>
<arg value="-init -d"/>
</java>
# native2ascii : 유니코드로의 변환
1) src : 변환할 파일들이 위치한 기준 디렉토리
2) dest : 변환한 결과를 저장할 디렉토리
3) encoding : 변환할 파일의 인코딩 (기본으로 JVM의 기본 인코딩 사용)
4) reverse : 이스케이프된 유니코드를 지정한 인코딩을 사용하는 문자열로 변환.
사용 예)
<native2ascii src="${config}"
dest="${build}/config"
includes="**/*.properties"
excludes="**/test/*.properties"
encoding="EUC-KR"/>
java.version Java Runtime Environment version java.vendor Java Runtime Environment vendor java.vendor.url Java vendor URL java.home Java installation directory java.vm.specification.version Java Virtual Machine specification version java.vm.specification.vendor Java Virtual Machine specification vendor java.vm.specification.name Java Virtual Machine specification name java.vm.version Java Virtual Machine implementation version java.vm.vendor Java Virtual Machine implementation vendor java.vm.name Java Virtual Machine implementation name java.specification.version Java Runtime Environment specification version java.specification.vendor Java Runtime Environment specification vendor java.specification.name Java Runtime Environment specification name java.class.version Java class format version number java.class.path Java class path java.library.path List of paths to search when loading libraries java.io.tmpdir Default temp file path java.compiler Name of JIT compiler to use java.ext.dirs Path of extension directory or directories os.name Operating system name os.arch Operating system architecture os.version Operating system version file.separator File separator ("/" on UNIX) path.separator Path separator (":" on UNIX) line.separator Line separator ("\n" on UNIX) user.name User's account name user.home User's home directory user.dir User's current working directory