ANT Manual

ANT Manual

1. Ant 소개
Apache AntJava기반의build도구얼마나개발을편리하게해주느냐가관련이있으며프로그램이나프로젝트와는특별한관계성이없다.간단하게말하자면make같은도구와유사한기능을하면서보다우수한특징들(자바기반의특징들)가지고있다는것이다.
여기서는기본적인Ant설치및문법을소개한다.
2. Ant 설치
2.1 Ant 구하기
Anthttp://jakarta.apache.org/ant/에서다운로드하여받을있다.
2.2 Ant 설치하기
– Window 환경에서설치
Ant c:ant인스톨되고있다고가정하고,다음의환경을도스창에서설정하든지
컴퓨터>등록정보>고급>환경변수
설정을
한다.
set ANT_HOME=c:ant
set JAVA_HOME=c:jdk1.2.2
set PATH=%PATH%;%ANT_HOME%bin
– Unix 환경에서설치
Ant /home1/jeus/ant인스톨되고있다고가정하고,다음의내용환경설정파일에설정한다. (사용하는shell따라서)
Unix (bash)
export ANT_HOME= /home1/jeus/ant
export JAVA_HOME /usr/j2se
export PATH=${PATH}:${ANT_HOME}/bin
Unix (csh)
setenv ANT_HOME /home1/jeus/ant
setenv JAVA_HOME /usr/j2se
set path=( $path $ANT_HOME/bin )
2.3 Ant 실행하기
우선2.2같이환경설정을한다.
Xml형태의ant build파일을작성한다.
(xml형태의build파일은하나의project,project안에하나이상의target그리고target내부에존재하는task형태로구성되어있다.)
Ant build파일이존재하는디렉터리에서다음과같은형태중에하나의방식으로실행한다.
MONOSUN$>ant
현재디렉터리에서default설정되어있는build.xml찾아서projectdefault target수행한다.
MONOSUN$>ant install
현재디렉터리에서default설정되어있는build.xml파일을찾아서install이라는이름의target수행한다.
MONOSUN$>ant –f vobuild.xml
현재디렉터리에서vobuild.xml찾아서projectdefault target수행한다.
MONOSUN$>ant install –f vobuild.xml
현재디렉터리에서vobuild.xml찾아서install이라는이름의target수행한다.
3. Ant 사용
Ant빌드파일은XML되어있으며하나의빌드파일은하나의project하나이상의target가지고있으며targettask요소로구성되어있다.
그럼각각에대해서세부적으로살펴보자.
3.1 Project
project그대로하나의project의미한다고보면된다.
project다음표와같이3가지속성을가지고있다.
속성(attribute)
설명(description)
필수(required)
name
project이름
아니오
default
target설정되지않았을때의기본target,이것은build시에옵션으로target설정하지않았을경우기본적으로수행하는target의미한다.
basedir
모든패스(path)처리가실행되는기본디렉터리
아니오

 

예제1) build.xml
<?xml version=”1.0″ encoding=”euc-kr”?>
<project name=”ejb” default=”init” basedir=”.”>
<target name=”init“>
</target>
<target name=”install” ….>
</target>
</project>
위의 예와같이하나의project하나이상의target정의하며하나의target실행하고자하는task들의집합으로형태로구성된다.위의예에서는project에서필수속성인defaultinit이라는이름을가진target지정되어있고project이름은ejb그리고기본디렉터리는현재디렉터리로되어있다.
3.2 Target
target특정작업단위(예를들면compile처리부분, document생성부분)라고있으며task들의집합형태로구성되어있다.그리고다른target의존관계를설정하여새로운target기존target들로조합하여생성하거나의존성을설정수도있다.예를들면A, B, C target있는데B targetA target실행된후에해야되는경우에B targetA target실행한후에실행하도록의존성을설정할있다는말이다. (,이것은단지실행하는순서만을지정하는것이다.)
target다음과같은속성들을가지고있다.
속성(attribute)
설명(description)
필수(required)
name
target이름
depends
target의존하는target리스트
왼쪽에서오른쪽으로순서로실행된다.
) depends=”A,B,C”
이것은A, B, C순서로수행된다.
아니오
if
target실행하기위해서설정되어야하는property이름이다.
아니오
unless
target실행하기위해서설정되지말아야하는property이름이다.
아니오
description
target대한간단한설명부분
아니오

 

예제2) build.xml
<?xml version=”1.0″ encoding=”euc-kr”?>
<project name=”ejb” default=”init” basedir=”.”>
<target name=”init“>
</target>
<target name=”ejb-engine-name_checkunless=”ejb-engine-name“>
</target>
<target name=”install” depends=”init, ejb-engine-name_check, …”>
</target>
</project>
위의 예제에서보듯이install이라는이름을가진targetinitejb-engine-name_check라는이름을가진target의존성을가지고있다.그리고ejb-engine-name_check이름을가진targetunless속성을가지고있으므로ejb-engine-name이라는property설정되어있지않으면ejb-engine-name_check라는target내에있는task실행한다는것을의미한다.따라서만약에실행targetinstall이라고준다면다음과같이실행한다면
$ant install
1.예제2build.xml이름이installtarget호출된다.
2.install targetdepends설정되어있으므로depends설정되어있는target들을왼쪽에서오른쪽순서로수행한다.
3.install target내부의task들을수행한다.
3.3 Task
task실행가능한코드의부분이라는의미를가지며복수의속성과(참고:속성값은property대한값도가능)가질있다.
전형적인task형태는다음과같다.
<nameattribute1=”value1attribute2=”value2” … />
nametask이름attribute1, attribute2속성value1, value2값을의미한다.
Task크게3가지형태가존재한다.
build-in task :기본core task
option task :추가적인package설치경우사용가능
사용자정의task:기본제공class상속받아서작성한다.
여기서는기본core task중에서가장많이사용되는tasktask속성만을다룬다.그리고task속성들은다운받은ant패키지에첨부되어있는appendix_e.pdf파일과html manual참조하기바란다.
3.3.1 property
속성(attribute)
설명(description)
필수(required)
name
Property설정하기위한이름
아니오
value
Property설정할경우의
name필드를사용3가지중에서하나를사용한다.
location
주어진파일의절대경로로property설정한다.
refid
다른곳에정의된객체를참조한다.
resource
Property파일의자원이름
name필드사용하지않을3가지중에서하나를사용한다.
file
Property파일의경로와파일명
environment
환경변수를수집할사용할접두어
classpath
자원을찾을사용하는classpath
아니오
classpathref
다른곳의<path>정의된것을참조하기위해서주어진자원을찾을사용하는classpath
아니오
prefix
파일이나자원을사용하여로드된Property들을적용하기위한접두어
아니오
3.3.2 copy
속성(attribute)
설명(description)
필수(required)
file
복사하기위한파일명
<fileset>사용하지않는경우에만
preservelastmodified
원래소스파일들의마지막수정시간과같이복사된파일들에게적용해준다.
아니오:defaultfalse
tofile
복사할파일
File속성과함께tofile또는todir사용되어질있다. <fileset>요소와함께만약file집합이1보다경우, <fileset>dir속성만지정되었거나또한file속성만지정된경우에만todir허용된다.
todir
복사할디렉터리
overwrite
디렉터리에현재의파일이존재하더라도덮어쓴다.
아니오:defaultfalse
filtering
전체build파일필터들을사용하여토큰필터링을복사하는동안실행할것인지설정한다.
아니오:defaultfalse
flatten
소스파일의디렉토리구조를무시하고모든파일을todir속성에의해서지정된디렉터리로복사한다.
아니오:defaultfalse
includeEmptyDirs
<fileset>포함된디렉터리도복사한다.
아니오:default true
failonerror
경고메시지를로그하지만build멈추지는않는다.
아니오:default true
verbose
복사된파일들을로그를남긴다.
아니오:default false
3.3.3 chmod
속성(attribute)
설명(description)
필수(required)
file
퍼미션을바꿀파일또는하나의디렉토리
두가지중에서하나를선택하거나<fileset>사용한다.
dir
파일을가지고있는디렉터리의퍼미션이변경되어진다.
perm
새로운퍼미션
includes
컴마또는공백으로구분되고반드시포함되어야파일들의패턴리스트
아니오
excludes
컴마또는공백으로구분되고반드시배제되어야파일들의패턴리스트
아니오
defaultexcludes
Default배제되는것을사용할것인지나타낸다.생략시에default배제는적용된다.
아니오
parallel
단일chmod명령어를사용을사용하여지정된모든파일들을처리한다.
아니오
type
filedir중에서하나또는둘다선택을있다.
아니오:defaultfile
3.3.4 input
속성(attribute)
설명(description)
필수(required)
message
build하는동안에사용자에게보여주는메시지
아니오
validargs
컴마로분리해서문자열들을열거한다.여기서지정되지않은인자는거절한다.
아니오
addproperty
입력으로부터생성되는property이름
아니오
3.3.5 mkdir
속성(attribute)
설명(description)
필수(required)
dir
생성할디렉터리
3.3.6 javac
속성(attribute)
설명(description)
필수(required)
srcdir
java파일들의위치
<src>사용하지않는다면
destdir
class파일들이저장될위치
아니오
includes
컴마또는공백으로구분되고반드시포함되어야파일들의패턴리스트
아니오
includesfile
파일들의리스트에포함되는파일이름
아니오
excludes
컴마또는공백으로구분되고반드시배제되어야파일들의패턴리스트
아니오
excludesfile
파일들의리스트에서배제되는파일이름
아니오
classpath
사용하기위한classpath
아니오
sourcepath
사용하기위한소스경로, defaultsrcdir값이다.
아니오
bootclasspath
Bootstrap클래스파일들의위치
아니오
classpathref
사용하기위한classpath로써다른곳에정의된경로를참조하는것이다.
아니오
sourcepathref
사용하기위한sourcepath로써다른곳에정의된경로를참조하는것이다.
아니오
bootclasspathref
사용하기위한bootclasspath로써다른곳에정의된경로를참조하는것이다.
아니오
extdirs
설치된확장들의위치
아니오
nowarn
컴파일시에–nowarn사용할것인지여부를나타낸다. Defaultoff이다.
아니오
debug
소스를debug정보를가지고컴파일것인지여부를나타낸다. Defaultoff이다.
아니오
debuglevel
디버거정보를나타내는레벨
아니오
optimize
최적화로소스를컴파일할것인지여부default:off
아니오
deprecation
Deprecation정보를컴파일할보여줄것인지여부default:off
아니오
target
특정VM맞는클래스생성
아니오
verbose
컴파일러에게verbose출력을요청여부
아니오
includeAntRuntime
Ant런타임라이브러리를포함할것인지여부
아니오
includeJavaRuntime
VM실행할classpath설정된Default런타임라이브러리들을포함할것인지여부default: yes
아니오
fork
따로JDK컴파일러를javac실행여부default: no
아니오
executable
fork= yes경우에사용하여실행하는javac절대경로default: ant실행시키는java컴파일러
아니오
memoryInitialSize
VM사용하는초기메모리크기(:128m)
아니오
memoryMaximumSize
VM사용하는최대메모리크기(:256m)
아니오
failonerror
만약컴파일에러가발생할build멈출것인지여부default:true
아니오
listfiles
컴파일되는소스파일을리스트할것인지여부default:no
아니오
3.3.7 java
속성(attribute)
설명(description)
필수(required)
classname
실행할Java클래스
Jar또는클래스이름
jar
실행할있는jar위치
Jar또는클래스이름
args
실행되어질클래스를위한인자
아니오
classpath
사용할classpath
아니오
classpathref
사용하기위한classpath로써다른곳에정의된경로를참조하는것이다.
아니오
fork
다른VM으로클래스실행하도록것인지여부
아니오
jvm
JVM호출하기위해서사용되는명령어default:java
아니오
jvmargs
ForkVM인자를전달되는인자deprecated되었고<jvmarg>대신사용
아니오
maxmemory
ForkVM할당되는최대메모리
아니오
failonerror
명령어가returncode0다른값을가지고존재한다면build프로세스를멈춤Default: false
아니오
dir
VM호출하기위한디렉터리(forkdisable되어있으면무시되어진다.)
아니오
output
출력으로작성할파일이름
아니오
append
기존의출력파일에덮어쓸지추가로덧붙여쓸지여부
아니오
newenvironment
새로운환경변수들이지정되었을기존의환경변수들을사용하지않는다. Default:false (forkdisable되어있으면무시된다.)
아니오
timeout
만약지정된시간내에끝나지않는다면명령어가멈춘다.(단위는밀리초)
아니오
3.3.8 jar
속성(attribute)
설명(description)
필수(required)
destfile
생성할jar파일
basedir
Jar포함할파일들의디렉토리위치
아니오
encoding
압축파일내에서사용하는파일이름을위해서사용할문자인코딩
아니오
filesonly
파일항목들만저장한다. Defualt: false
아니오
includes
컴마또는공백으로구분되고반드시포함되어야파일들의패턴리스트
아니오
includesfile
파일들의리스트에포함되는파일이름
아니오
excludes
컴마또는공백으로구분되고반드시배제되어야파일들의패턴리스트
아니오
excludesfile
파일들의리스트에서배제되는파일이름
아니오
defaultexcludes
excludes기본적으로사용할것인지여부
아니오
manifest
사용할manifest파일
아니오
update
이미존재하는파일이있다면대상파일을업데이트것인지overwrite것인지여부
아니오
whenempty
일치되는파일이없을처리(fail,skip,create) default:skip
아니오
duplicate
파일이중복된것을발견했을처리(add,preserve,fail) default: add
아니오
index
Classloading빨리하기위해서Index list작성할지여부default: false (JDK 1.3.X만의특징)
아니오
3.3.9 delete
속성(attribute)
설명(description)
필수(required)
file
삭제할파일
<fileset>사용하지않는다면중에서하나
Dir
삭제할디렉터리
verbose
삭제되는파일들의이름을보여준다. Default: false
아니오
quiet
지정된파일이나디렉터리가존재하지않더라도설명하는메시지를출력하지않는다. Default: false
아니오
failonerror
에러가build멈추게할지제어하거나화면에보여주기만할것인지제어할지여부단지quietflase때만관련있다. Default: true
아니오
includeEmptyDirs
<fileset>사용했을디렉터리도삭제하기위해서는true설정해야한다. Default: false
아니오
includes
Deprecated되었다. <fileset>대신사용한다.
아니오
includesfile
Deprecated되었다. <fileset>대신사용한다.
아니오
excludes
Deprecated되었다. <fileset>대신사용한다.
아니오
excludesfile
Deprecated되었다. <fileset>대신사용한다.
아니오
defaultexcludes
Default excludes사용할지여부
아니오
3.3.10 echo
속성(attribute)
설명(description)
필수(required)
message
Echo하기위한메시지
요소내에서 문자부부에포함 되어있는데이터없을경우에
file
메시지를작성하기위한파일
아니오
append
존재하는파일에추가할지여부
아니오
default: false
level
Dl메시지를보여줄레벨을제어(error, warning, info, verbose, debug)
아니오
default: warning
3.3.11 Nested Tasks
task 내에서사용되는내부task중에서많이사용되는것들만열거한다.
jvmarg
속성(attribute)
설명(description)
필수(required)
value
JVM인자
classpath
속성(attribute)
설명(description)
필수(required)
path
Classpath경로설정
arg
속성(attribute)
설명(description)
필수(required)
line
실행하는클래스의인자들의
sysproperty
속성(attribute)
설명(description)
필수(required)
key
Systemproperty값의
value
Systemproperty값을지정
Key있다면
metainf
속성(attribute)
설명(description)
필수(required)
dir
Meta-INF포함할파일이존재하는디렉토리
includes
컴마또는공백으로구분되고반드시포함되어야파일들의패턴리스트
아니오
include
속성(attribute)
설명(description)
필수(required)
name
포함할파일이름또는파일이름의패턴
exclude
속성(attribute)
설명(description)
필수(required)
name
배제할파일이름또는파일이름의패턴
3.4 Type
Type크게2가지로나누어진다.
Core Type
Option Type
여기서는Core Type중에서도많이사용되는것만다룬다.
3.4.1 fileset
속성(attribute)
설명(description)
필수(required)
dir
<fileset>디렉터리treeroot
defaultexcludes
Default excludes사용할것인지여부를나타낸다.
아니오
includes
컴마또는공백으로구분되고반드시포함되어야파일들의패턴리스트
아니오
includesfile
파일들의리스트에서포함되는파일이름
아니오
excludes
컴마또는공백으로구분되고반드시배제되어야파일들의패턴리스트
아니오
excludesfile
파일들의리스트에서배제되는파일이름
아니오
casesensitive
대소문자구분여부default: true
아니오
followsymlinks
심벌릭링크를허용할것인지여부default: true
아니오