ant 를 이용해 보니 정말 쉽습니다. 이거야 원 컴파일 일일이 어떻게 하나 걱정 했는데,

손쉽게 한방에 됐습니다. unix/lunux 의 make 와 같다고들 하는데, 전 make가 뭐 할때 사용 하는건지

모릅니다.

ANT Manual


1. Ant 소개

Apache Ant Java 기반의
build
도구얼마나 개발을 편리하게해주느냐가관련이있으며프로그램이나 프로젝트와는특별한관계성이없다.
간단하게
말하자면 make같은도구와유사한기능을
하면서보다
우수한특징들(자바기반의 특징들)
가지고
있다는것이다.

여기서는기본적인 Ant
설치및문법을 소개한다.

2. Ant
설치

2.1 Ant 구하기

Ant
http://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
찾아서
project default target
수행한다.

MONOSUN$>ant install
현재
디렉터리에서
default
설정되어 있는 build.xml파일을
찾아서
install이라는
이름의 target
수행한다.

MONOSUN$>ant –f vobuild.xml

현재
디렉터리에서
vobuild.xml
찾아서 project default target
수행한다.

MONOSUN$>ant install –f vobuild.xml

현재
디렉터리에서
vobuild.xml
찾아서 install이라는 이름의 target
수행한다
.

3. Ant
사용

Ant
빌드 파일은 XML
되어
있으며 하나의
빌드 파일은
하나의 project 하나 이상의 target
가지고 있으며 target
task
요소로
구성되어
있다.

그럼
각각에
대해서
세부적으로
살펴보자.

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에서 필수
속성인 default init이라는
이름을 가진 target
지정되어
있고 project
이름은 ejb
그리고
기본 디렉터리는
현재 디렉터리로
되어 있다.

3.2 Target

target
특정 작업
단위(예를
들면 compile 처리부분, document
생성부분
)라고

있으며 task들의
집합형태로 구성되어
있다.
그리고
다른 target 의존
관계를 설정
하여 새로운 target
기존
target들로
조합하여 생성하거나
의존성을 설정
수도
있다.
예를
들면 A, B, C target 있는데 B target
A target

실행된
후에 해야
되는 경우에 B target
A 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_check
unless
=”ejb-engine-name“>

</target>

<target name=”install” depends=”init,
ejb-engine-name_check
, …”>

</target>

</project>

위의 예제에서 보듯이 install이라는
이름을
가진 target init ejb-engine-name_check라는
이름을 가진 target
의존성을
가지고
있다
. 그리고 ejb-engine-name_check이름을
가진 target unless 속성을
가지고
있으므로 ejb-engine-name이라는 property
설정되어 있지
않으면 ejb-engine-name_check라는 target
내에 있는 task
실행한다는
것을
의미한다
. 따라서
만약에 실행 target
install
이라고
준다면
다음과
같이 실행한다면

$ant
install

1.      
예제2 build.xml
이름이 install target
호출된다.

2.      
install target depends
설정되어
있으므로 depends 설정되어
있는 target들을
왼쪽에서 오른쪽
순서로 수행한다.

3.      
install target
내부의
task들을
수행한다.

3.3 Task

task
실행 가능한
코드의 부분이라는
의미를 가지며
복수의 속성과
(참고: 속성값은
property

대한
값도 가능)
가질
있다.

전형적인 task 형태는 다음과 같다.

<name attribute1=”value1
attribute2=”value2” … />

name task
이름
attribute1, attribute2
속성 value1, value2 값을 의미한다.

Task
크게 3가지
형태가 존재한다.

         
build-in task :
기본
core task

         
option task :
추가적인
package 설치
경우
사용 가능

         
사용자
정의
task: 기본
제공 class
상속 받아서
작성한다.

여기서는
기본
core task
중에서 가장
많이 사용되는 task
task
속성만을 다룬다. 그리고
  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

원래
소스
파일들의
마지막
수정 시간과
같이
복사된 파일들에게
적용해준다.

아니오:default false

tofile

복사할
파일

File 속성과
함께 tofile
또는
todir
사용되어질
있다. <fileset>
요소와 함께
만약 file
집합이 1보다
경우, <fileset> dir 속성만
지정되었거나
또한 file
속성만 지정된
경우에만 todir
허용된다.

todir

복사할
디렉터리

overwrite

디렉터리에
현재의 파일이
존재하더라도 덮어쓴다.

아니오:default false

filtering

전체 build
파일 필터들을
사용하여 토큰
필터링을 복사하는
동안 실행할
것인지 설정한다.

아니오:default false

flatten

소스
파일의
디렉토리
구조를
무시하고
모든
파일을 todir
속성에 의해서
지정된 디렉터리로
복사한다.

아니오:default false

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중에서
하나
또는 둘다
선택을
있다.

아니오:default file

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

사용하기
위한
소스 경로, default
srcdir
값이다.

아니오

bootclasspath

Bootstrap 클래스
파일들의 위치

아니오

classpathref

사용하기
위한
classpath로써
다른 곳에
정의된 경로를
참조하는 것이다.

아니오

sourcepathref

사용하기
위한
sourcepath로써
다른 곳에
정의된 경로를
참조하는 것이다.

아니오

bootclasspathref

사용하기
위한
bootclasspath로써
다른 곳에
정의된 경로를
참조하는 것이다.

아니오

extdirs

설치된
확장들의
위치

아니오

nowarn

컴파일시에 –nowarn 사용할것인지 여부를 나타낸다. Default
off
이다.

아니오

debug

소스를 debug
정보를 가지고
컴파일
것인지 여부를
나타낸다. Default off이다.

아니오

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

Fork VM
인자를
전달되는
인자
deprecated되었고 <jvmarg>
대신 사용

아니오

maxmemory

Fork VM
할당되는
최대
메모리

아니오

failonerror

명령어가 returncode 0
다른 값을
가지고 존재한다면 build 프로세스를
멈춤
Default: false

아니오

dir

VM 호출하기 위한 디렉터리(fork disable되어
있으면
무시되어진다.)

아니오

output

출력으로
작성할
파일 이름

아니오

append

기존의
출력
파일에 덮어쓸지
추가로 덧붙여
쓸지 여부

아니오

newenvironment

새로운
환경
변수들이
지정되었을

기존의
환경 변수들을
사용하지 않는다. Default:false (fork disable되어
있으면
무시된다.)

아니오

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 멈추게 할지 제어하거나
화면에 보여주기만
할것인지 제어할지
여부 단지 quiet
flase
때만
관련
있다. 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

System property
값의

value

System property 값을
지정

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>
디렉터리 tree root

defaultexcludes

Default excludes
사용할 것인지
여부를 나타낸다.

아니오

includes

컴마
또는
공백으로
구분되고
반드시
포함
되어야
파일들의 패턴
리스트

아니오

includesfile

파일들의
리스트에서
포함되는
파일
이름
includeEmptyDirs와 충돌

아니오

excludes

컴마
또는
공백으로
구분되고
반드시
배제
되어야
파일들의 패턴
리스트

아니오

excludesfile

파일들의
리스트에서
배제되는
파일
이름

아니오

casesensitive

대소문자
구분
여부 default: true

아니오

followsymlinks

심벌릭
링크를
허용할
것인지
여부 default: true

아니오


     

Leave a Reply

Your email address will not be published. Required fields are marked *