# 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"/>