IT_Programming/Dev Tools

ANT 기본 정리 1

JJun ™ 2008. 11. 24. 01:41

<!--
=====================================================================================

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>