BLOG main image
정민군's Blog
miniya devlog

'System'에 해당되는 글 5건

  1. 2006.10.17 BUILD.XML 작성
  2. 2006.10.17 Apache ANT Guide

BUILD.XML 작성

System/Server 2006. 10. 17. 21:18 by 정민군

build.xml의 구성

by kkaok
2003-06-02


Ant의 빌드파일은 확장자를 보면 알 수 있듯이 xml이다. 따라서 빌드파일의 최상단에는 xml의 정의해야 한다. 전체 구성은 <project>로 시작해서 </project>로 끝나고 그 안에 하나 이상의 target, Properties, path 등이 삽입된다.


xml 정의

<?xml version="1.0" encoding="euc-kr"?>


project
project는 name, default, basedir 세가지 속성을 가진다.

name은 프로젝트명이고 default는 실행타겟이 지정되지 않았을 때 기본적으로 실행되는 타겟명을 적는다. basedir은 처리되는 디렉토리 명으로 build.xml이 상위 폴더 아래 있다면 생략 가능하며 basedir="." 이런 식으로 적어 주면 된다.

<project name="kkaok" default="deploy">
...
</project>


Properties
프라퍼티는, 이름(name)과 값(value)을 한쌍으로 가지며. 이름은 대·소문자를 구별한다. 프라퍼티의 이름은 다른 곳에서 "${프라퍼티명}"으로 사용이 가능하다.

<property name="catalina.home" value="C:/Tomcat 4.1"/>
<property name="deploy.home" value="C:/kkaok_project/kr.pe.kkaok.board"/>


path, classpath
path와 clsaspath는 다음과 같은 형식을 가진다.

<classpath>
   <pathelement path="${classpath}"/>
   <pathelement location="lib/helper.jar"/>
</classpath>


내부요소(pathelement)로 path와 location이 있으며 path는 보통 이미 정의된 경로와 함께 사용할 때 사용되어지고 location은 단일한 파일을 설정하거나 디렉토리를 설정할 때 사용된다. 이외에 DirSets, FileSets, FileLists는, 내부에 <dirset>, <fileset>,<filelist> 요소로 지정할 수 있다.

<path id="compile.classpath">
   <pathelement location="${catalina.home}/common/classes"/>
   <fileset dir="${catalina.home}/common/lib">
       <include name="*.jar"/>
   </fileset>
   <fileset dir="lib">
       <include name="*.jar"/>
   </fileset>
</path>

target
target은 name, depends, if, unless, description 다섯 개의 속성을 가지며 다른 여러 타겟에 의존할 수 있다. 이것은 해당 타겟을 실행시키면 depends 된 여러 타겟을 함께 실행시킨다는 것이다.


depends : 이 타겟이 의존하는 타겟의 이름들.
if : 이 타겟을 실행하기 위해 설정되어야만 하는 프로퍼티의 이름.
unless : 이 타겟을 실행하기 위해서 설정되어선 안 되는 프로퍼티의 이름.
description : 이 타겟에 대한 설명.


실행 순서
<target name="A"/>
<target name="B" depends="A"/>
<target name="C" depends="B"/>
<target name="D" depends="C,B,A"/>
만약 위와 같이 타겟들이 서로 의존하고 있 D를 실행시킨다면

PROMPT>ant D

A,B,C,D 순으로 실행이 된다.


만약 명령창에서 그냥 ant만 하게 되면 project의 default로 정의된 타겟을 실행 시킨다. 위에서 A를 실행시키고 싶다면 아래처럼 하면 된다.

PROMPT> ant A

즉 여러개 실행 타겟 만들고 선별해서 실행 시킬 수 있다는 것이다. 너무나도 편리한 ant~~~


http://www.kkaok.pe.kr/


Apache ANT Guide

System/Server 2006. 10. 17. 21:10 by 정민군
Apache ANT Guide
요약 : Apache ANT Guide
작성자 : 최지웅
Article요약

아파치 그룹에서 내놓은 빌더툴인 ant1.4.1버젼을 이용하여 각각의 태그와 그에 대한 내용을
공부해보도록 하죠.. *^^*
이툴을 이용하여 java compile및 ejb-jar파일의 생성, deploy및 sql파일의 처리, database에 대한
접속을 통하여 많은 일들을 할수 있도록 구성되어져 있습니다.
각 사용법과 샘플을 통하여 사용법을 익혀보도록 합시다


Article 내용
****************************
*              Ant 시작하기               *
****************************

.인스톨하기
- 아래의 사이트로부터 다운받는다.
       http://jakarta.apache.org/builds/ant/release/v1.4.1/bin/

- 권장사항 jdk1.2버젼이상을 추천한다.
- Windows
설치된 디렉토리가 c:\ant\. 로 가정했을경우에

       set ANT_HOME=c:\ant
       set JAVA_HOME=c:\jdk1.3.1
       set PATH=%PATH%;%ANT_HOME%\bin

의 환경변수를 잡아주도록 한다.

- Unix(bash)

       export ANT_HOME=/usr/local/ant
       export JAVA_HOME=/usr/local/jdk1.3.1
       export PATH=${PATH}:${ANT_HOME}/bin

****************************
*              Ant 실행하기               *
****************************

Command-line option

ant [options] [target [target2 [target3] ...]]
Options:
-help                  print this message
-projecthelp           프로젝트에 필요한 도움을 보여준다
-version              현재 버젼은 보여준다
-quiet                 아무런 표시없이 build한다
-verbose               verbose모드를 실시한다.
-debug                 dubugging을 한다.
-emacs                 로깅정보를 만들어낸다
-logfile file          주어진 파일로 로그를 출력한다.
-logger classname      해당클래스를 이용하여 로깅을 수행한다.
-listener classname    리스너클래스를 추가한다.
-buildfile file        대상 build파일을 정의한다.
-find file             루트로부터 buildfile을 찾는다.
-Dproperty=value       build설정에 필요한 프로퍼티를 찾는다.

ant를 batch파일 없이 직접 실행하고 싶다면 아래와 같은 옵션을 이용하여 실행하면 된다

java -Dant.home=c:\ant org.apache.tools.ant.Main [options] [target]

*************************************
*              SimpleBuild파일 만들어보기                *
*************************************

상위 tag부터 소개한다.

<project name="" default="" basedir=""></project>

name -- 이 프로젝트의 설정이름을 기록한다.( 안써두 무방 )
default -- target이 지정되지 않았을때 default target으로 쓴다. (반드시 기술)
basedir -- 현재 build를 사용할 디렉토리를 설정한다. 보통 현재디렉토리를 많이 사용한다.(안써두 됨)

================================================================
<target></target>

현재 build되는 target은 다른 target에 의존하여 build되어질수 있다. 그럴경우에 이 tag를 이용하여
build하도록 한다.

       <target name="A"/> -- 현재 build되어진다.
       <target name="B" depends="A"/> -- A가 정상적으로 이루어져야만 B의 build가 이루어진다.
       <target name="C" depends="B"/>  -- 위와 같은 방법으로 recursive하게 이루어진다.
       <target name="D" depends="C,B,A"/>

이해가 금방 되리라 본다.

여기서 조합으로 if-unless를 사용할수도 있다.

1: <target name="build-module-A" if="module-A-present"/>
2: <target name="build-own-fake-module-A" unless="module-A-present"/>
위의 내용에서 module-A-present에 따라서 두가지 형태로 분기되면 반드시 한가지는 실행되어지는
모습을 볼수 있다. module-A-present가 성공했을경우 1번을 수행하고, 실패했을경우는 2번으로
분기되어서 실행될수 있도록 한다.

target은 다음과 같은 속성을 갖는다.
name -- target의 이름.(반드시 기술하여야 함)
depends -- 콤마(,)로 구분하며 다른 target에 영향을 받으며 build되어진다.(안써두 됨)
if -- 현재 target이 실행될것인지를 결정(안써두 됨)
unless -- unless의 target이 실패했을경우 처리되는 부분(안써두 됨)
description -- description(안써두 됨)


*************************************
*              Properties의 사용                           *
*************************************
<property name="foo.dist" value="dist"/>
dist란 value를 foo.dist로 setting한다.

<property file="foo.properties"/>
foo.properties파일을 읽어들여 build.xml파일의 프로퍼티로 세팅한다.

<property resource="foo.properties"/>

<property file="${user.home}/.ant-global.properties"/>
속성을 겹쳐서 프로퍼티 파일을 읽어들일수도 있다.        


*************************************
*              Path-Link의 사용                                   *
*************************************
<classpath>
     <pathelement path="${classpath}"/>
     <pathelement location="lib/helper.jar"/>
</classpath>

클래스패스링크를 사용하여 path 또는 classpath를 추가시킬수 있다.
패스를 계속적으로 추가하고자 할때는 ; or :를 이용하여 추가할수 있다.

위의 내용을 아래와 같이 요약하여 한줄에 추가시킬수 있다.

<classpath path="${classpath}"/>

*************************************
*             Referencing하기                                    *
*************************************

<project ... >
 <target ... >
   <rmic ...>
     <classpath>
       <pathelement location="lib/"/>
       <pathelement path="${java.class.path}/"/>
       <pathelement path="${additional.path}"/>
     </classpath>
   </rmic>
 </target>

<!-- =====위의 내용은 rmic를 이용하여 클래스패스를 이용한 컴파일을 시도하기 위한 스크립트이다 -->

 <target ... >
   <javac ...>
     <classpath>
       <pathelement location="lib/"/>
       <pathelement path="${java.class.path}/"/>
       <pathelement path="${additional.path}"/>
     </classpath>
   </javac>
 </target>

  <!-- =====위의 내용은 javac를 이용하여 클래스패스를 이용한 컴파일을 시도하기 위한 스크립트이다 -->
</project>


위의 샘플에서는 불필요한 classpath가 계속 쓰여지고 있다. 안좋은 방법이므로 아래와같이 다시 쓸수 있다.

<project ... >
 <path id="project.class.path">  <----- path-id를 지정해놓고서 아래쪽에서 패스를 참조하도록 한다.
   <pathelement location="lib/"/>
   <pathelement path="${java.class.path}/"/>
   <pathelement path="${additional.path}"/>
 </path>



 <target ... >
   <rmic ...>
     <classpath refid="project.class.path"/>  <--- 위의 ref-id로 설정해 놓은 패스를 참조하여 사용하도록 한다.
   </rmic>
 </target>

 <target ... >
   <javac ...>
     <classpath refid="project.class.path"/>
   </javac>
 </target>
</project>



*************************************
*              Sample예제                                           *
*************************************

--현재 디렉토리 구성을 보도록 하자.
       WeblogicBuildTest/
       WeblogicBuildTest/src
       WeblogicBuildTest/src/Echo.java
       WeblogicBuildTest/src/EchoHome.java
       WeblogicBuildTest/src/EchoEJB.java
       WeblogicBuildTest/src/EchoClient.java

--아래의 내용을 이용하여 weblogicaux.jar를 이용하여 build를 시도한다.
-- 컴파일에 성공하면 현재 클래스파일들을 이용하여 MyProject-현재날짜.jar파일로 묶는다


도스명령 : ant -Dweblogic.classpath=c:\weblogic\lib\weblogicaux.jar

<project name="MyProject" default="dist" basedir=".">

 <!-- set global properties for this build -->
 <property name="src" value="src"/>
 <property name="build" value="build"/>
 <property name="dist"  value="dist"/>

 <property name="weblogicaux.jar"   value="${weblogic.home}/lib/weblogicaux.jar" />


 <target name="init">
   <!-- Create the time stamp -->
   <tstamp/>
   <!-- Create the build directory structure used by compile -->
   <mkdir dir="${build}"/>
 </target>

 <target name="compile" depends="init">
   <!-- Compile the java code from ${src} into ${build} -->
   <javac srcdir="${src}" destdir="${build}"
       classpath="${weblogic.classpath}:${build}"
   />
 </target>

 <target name="dist" depends="compile">
   <!-- Create the distribution directory -->
   <mkdir dir="${dist}/lib"/>

   <!-- Put everything in ${build} into the MyProject-${DSTAMP}.jar file -->
   <jar jarfile="${dist}/lib/MyProject-${DSTAMP}.jar" basedir="${build}"/>
 </target>

 <target name="clean">
   <!-- Delete the ${build} and ${dist} directory trees -->
   <delete dir="${build}"/>
   <delete dir="${dist}"/>
 </target>
</project>



==================================================
==================================================
Directory Base Tasks
==================================================
==================================================

1. Patterns

exclusion과 inclusion에 대한 패턴을 정의 할수 있으며, 우리가 일반적으로 사용하는
wild card *, ?를 이용하여 표현할 수 있다.

예를 들면
       *.java  는  .java의 확장자를 가진 모든 파일을 표현한다.
                x.java, FooBar.java 등등


*는 파일에 대한 내용을 보여주고자 할때 사용하는 패턴이며

**는 디렉토리의 이름을 이용하여 표현할수 있게끔 만드는 확장자 이름이다.
또한 0개 이상의 디렉토리를 표현하고자 할때 이패턴을 사용하게 된다.

예를 들어 /test/**는 test라는 디렉토리 안의 파일 및 다른 서브디렉토리를 모두 포함하는 wildcard로서 동작된다.

Example Pattern

**/CVS/* :
       CVS/Repository
       org/apache/CVS/Entries
       org/apache/jakarta/tools/ant/CVS/Entries
     
But not:
       org/apache/CVS/foo/bar/Entries (foo/bar/ 부분이 일치하지 않는다.)
--------------------------------------------
org/apache/jakarta/** :
       org/apache/jakarta/tools/ant/docs/index.html
       org/apache/jakarta/test.xml
     
But not:
       org/apache/xyz.java
--------------------------------------------
org/apache/**/CVS/* :
       org/apache/CVS/Entries
       org/apache/jakarta/tools/ant/CVS/Entries
   
But not:
       org/apache/CVS/foo/bar/Entries
     
---------------------------------------------

예제

<copy todir="${dist}">
 <fileset dir="${src}"
          includes="**/images/*"
          excludes="**/*.gif"
 />
</copy>

src의 하위 디렉토리에서 **/images/* 패턴에 적용되는 것을 모두 복사하여 dist디렉토리로
복사한다. (현재 디렉토리에 있는 모든 *.gif인 파일은 제외하구 옮긴다.



*************************************
*             FileCopy하기                                           *
*************************************

새로운 Fileset이나 file을 이용하여 파일/디렉토리로 카피할수 있다.

Paramters :
file -- 카피할 파일을 지정한다. 하나 또는 하나이상의 file or fileset을 지정해야 한다.
preservelastmodified -- 원본파일과 같을 경우 카피를 시도한다. 최종 수정본과 현재 대상본이 같아야 한다.(default : no)
tofile -- 카피되어질 파일이름을 지정한다. tofile or todir이 사용되어진다. fileset을 사용하게 된다면 todir로만 사용되어져야 한다.
todir -- 카피되어질 디렉토리를 설정한다
overwrite -- 대상디렉토리에 해당 파일이 존재할경우 overwrite할지 새롭게 만들지를 결정한다.  Defaults to "no".
filtering -- 카피도중에 필터를 사용하여 카피를 할것인지를 결정한다. Defaults to "no".  
flatten -- 소스디렉토리의 하위구조를 무시하고 모든 내용을 한디렉토리로만 복사한다.  Defaults to "no".  
includeEmptyDirs -- FileSet에 포함된 빈 디렉토리도 카피할수 있도록 한다. Defaults to "yes".


Examples
------------------------------------------------
1개의 파일 복사하기
<copy file="myfile.txt" tofile="mycopy.txt"/>

파일을 디렉토리로 복사하기
<copy file="myfile.txt" todir="../some/dir/tree"/>

한디렉토리를 다른 디렉토리로 복사하기
<copy todir="../new/dir">
   <fileset dir="src_dir"/>
</copy>

src_dir밑의 .java파일을 제외한 것을 ../dest/dir디렉토리로 복사

 <copy todir="../dest/dir" >
   <fileset dir="src_dir" >
     <exclude name="**/*.java"/>
   </fileset>
 </copy>

 <copy todir="../dest/dir" >
   <fileset dir="src_dir" excludes="**/*.java"/>
 </copy>

디렉토리에 있는 파일들을 대상으로 확장자 bak를 붙여서 복사하도록 한다.

 <copy todir="../backup/dir" >
   <fileset dir="src_dir" />
   <mapper type="glob" from="*" to="*.bak"/>
 </copy>


원본 디렉토리의 TITLE이라는 문자를 Foo Bar로 대치하여 복사한다.

 <copy todir="../backup/dir" >
   <fileset dir="src_dir" />
   <filterset>
     <filter token="TITLE" value="Foo Bar" />
   </filterset>
 </copy>


유사 태그로서 copydir, copyfile태그가 있다.

*************************************
*             Delete하기                                           *
*************************************
하나의 파일을 지우거나, 서브디렉토리 및 하나이상의 fileset등을 이용하여 지울수
있도록 한다.

Parameter는 CopyFile과 유사하다. 추가가 된것을 보도록 하자.

failonerror -- 파일 삭제에 실패했을 경우, build를 멈추고 현재의 스크린에 해당 사항을 보여주도록 한다.
includeEmptyDirs -- 빈디렉토리까지 모두 삭제하도록 한다.


Examples

<delete file="/lib/ant.jar"/>
/lib/ant.jar 을 삭제한다.

 <delete dir="lib"/>
lib디렉토리의 모든 파일 및 서브디렉토리를 가차없이 삭제한다.

 <delete>
   <fileset dir="." includes="**/*.bak"/>
 </delete>

현재 디렉토리및 하위디렉토리에서 bak의 확장자를 가진 파일을 모두 삭제한다.

 <delete includeEmptyDirs="true" >
   <fileset dir="build" />
 </delete>

build자신을 포함하고 있는 디렉토리이면 모든 파일과 하위디렉토리를 삭제하도록 한다.


*************************************
*             Echo                                                           *
*************************************
현재 시스템 콘솔이나 파일로 메시지를 출력하도록 한다.

message -- 보여줄 메시지를 기술한다.
file -- 이 메시지를 해당파일로 출력하도록 한다.(default no)
append -- 현재 파일이 존재하고있으면 추가시키는 모드를 설정한다.

Examples
 <echo message="Hello world"/>
 
<echo>
요부분은 해당 콘솔에 나오는 글자입니다.!!! 바보야~~ ㅋㅋ
</echo>

*************************************
*             JAR파일 만들기                                   *
*************************************
해당 task를 이용하여 jar파일을 생성할수도 있다.
ZIP파일을 묶는 task과  같은 형식으로 동작하여 각각의 묶일 파일이나 디렉토리 모두를 지정할수 있다.

<jar> </jar>tag에 반드시 들어가야하는 속성은 jarfile이란 태그로서 해당 jar파일의 이름을 지칭한다.
jarfile -- 생성할  jar-file
basedir -- jar-file을 생성할 기본디렉토리를 지정. Default No
compress -- 저장된 데이터뿐만 아니라 압축된 형태까지 모두 묶는다, No
encoding -- 묶을 파일의 character encoding set을 지정한다.웬만하면 바꾸지 말기
filesonly -- 엔트리에 들어있는 파일만 묶는다. No
includes -- ,(comma)로 분리되어 있는 패턴파일 리스트를 반드시 포함하여 묶는다. No
includesfile -- 각각에 패턴에 해당하는 파일을 이용하여 묶도록 한다. No
excludes -- 파일패턴에 대한 파일 제외하고 묶는다. No
excludesfile -- No
defaultexcludes -- defaultexclude를 사용할지 안할지를 결정한다. No
manifest -- manifest파일을 사용하도록 한다. No
update -- 만약에 해당 jar파일이 존재한다면 update할것인지 overwrite할것인지를 결정한다.  No
whenempty -- 패턴에 매핑되는 파일이 없더라도 동작을 할것인지를 결정한다. No


Examples :

 <jar jarfile="${dist}/lib/app.jar" basedir="${build}/classes"/>
${build}/classes디렉토리에 있는 모든 파일들을 ${dist}/lib 디렉토리의 app.jar란 이름으로 압축한다.

-----------------------------------------------------------
 <jar jarfile="${dist}/lib/app.jar"
      basedir="${build}/classes"
      excludes="**/Test.class"
 />
${build}/classes디렉토리의 Test.class를 제외한 모든 파일들을 ${dist}/lib디렉토의 app.jar파일의 이름으로 압축한다.

------------------------------------------------------------
 <jar jarfile="${dist}/lib/app.jar"
      basedir="${build}/classes"
      includes="mypackage/test/**"
      excludes="**/Test.class"
 />
${build}/classes디렉토리에 있는 모든 파일들을 ${dist}/lib 디렉토리의 app.jar란 이름으로 묶는다.
다 묶는것이아니라 ${build}/classes/mypackage/test밑의 파일만을 사용하며 Test.class를 제외한다.


 <jar jarfile="${dist}/lib/app.jar">
   <fileset dir="${build}/classes"
            excludes="**/Test.class"
   />
   <fileset dir="${src}/resources"/>
 </jar>

${build}/classes와 ${src}/resource디렉토리를 app.jar라는 이름으로 함께 묶는데 Test.class를 제외하여 묶는다
--------------------------------------------------------------------------------


*************************************
*            Java Execute                                           *
*************************************
이제 tag를 이용한 java명령을 실행시켜보도록 하자.

우선 해당 tag안에 들어가는 parameter부터 확인해 보도록 하자.
한가지 조심해야 할것이 있는데 프로그램코딩중에 System.exit()부분을 잘 써야 한다
만약 그것을 써버리게 되면 ant또한 같은 vm상에서 동작중이므로 ant까지 빠져나와버리는
경우가 발생할수 있다.


classname -- 실행시킬 자바 클래스명을 기술한다. jar또는 class name이 될수 있다.
jar -- 실행시킬 jar파일의 위치를 표시한다.만약 이 옵션이 선택되어 진다면 반드시 Fork의 속성을 true로 만들어야 한다.
args -- 실행되어질 클래스의 argument를 지정한다. deprecate되었으면 현재는 <arg>태그를 사용한다. No
classpath -- 사용할 클래스패스를 지정한다. No
classpathref -- 클래스패스를 사용하는데 PATH에 정의되어진 reference를 이용한다. No
fork -- 다른 vm상에서 클래스를 trigger하고 싶다면 설정한다. No
jvm -- JVM에 대한 option command를 사용한다. fork옵션이 비활성화 되었으면 무시된다. No
jvmargs -- fork된 VM에 대한 argument를 사용한다. deprecated됐으며 <jvmarg> 를 사용한다. No
maxmemory -- fork된 vm에 대한 최대 메로리값을 할당한다. No
failonerror -- 0이 아닌 다른 returncode가 오게 되면 build process를 중지한다. 반드시 fork가 true일때만 사용가능하다. No
dir -- The directory to invoke the VM in. No
output -- 지정된 파일을 output으로 사용한다. No


Example
 
      <java classname="test.Main" >
        <arg value="-h"/>
        <classpath>
          <pathelement location="\test.jar"/>
          <pathelement path="${java.class.path}"/>
        </classpath>
      </java>

Examples

 <java classname="test.Main"/>
 <java classname="test.Main" fork="yes" >
   <sysproperty key="DEBUG" value="true"/>
   <arg value="-h"/>
   <jvmarg value="-Xrunhprof:cpu=samples,file=log.txt,depth=3"/>
 </java>

*************************************
*            Java Compile                                           *
*************************************

javac를 이용하여 자바프로그램을 컴파일할 수 있도록 하는 태그로서 각종 옵션들이 이쪽에 들어가게 된다.

Parameters
====================
srcdir -- 컴파일대상의 자바파일들의 위치를 나타낸다.
destdir -- compile된 클래스 파일들이 들어가게될 디렉토리를 지칭한다.  No
includes -- ,(comma)로 분리된 파일의 패턴을 이용하여 포함된 파일들을 모두 컴파일한다. No
includesfile -- include패턴에 명명된 파일을 포함하여 compile한다. No
excludes -- exclude패턴에 명명된 제외을 포함하여 모두 compile한다. No
excludesfile -- exclude패턴에 명명된 제외을 포함하여  compile한다. No
defaultexcludes -- default excludes를 사용하여 compile한다. No
classpath -- 클래스 패스를 사용할 경우에 기술한다. No
bootclasspath -- bootstrap class file의 위치를 기술한다. No
classpathref -- PATH reference에 주어진 클래스패스를 사용하여 compile한다. No
bootclasspathref -- PATH reference에 주어진 bootstrap 클래스패스를 사용하여 compile한다. No
extdirs -- 설치된 extension의 위치. No
encoding -- source file encoding. No
nowarn -- compiler로 -nowarn옵션을 전달한다. No
debug -- compile time debug모드로 설정한다 No
optimize -- optimize옵션을 사용한다. no
deprecation -- deprecation옵션을 사용한다. No
target -- 명시된 VM을 사용하여 class파일을 생성하도록 한다. No
verbose -- 출력을 verbose모드로 설정한다. No
depend -- dependenty-tracking compiler모드를 사용한다. No
includeAntRuntime -- Ant run-time lib를 포함하여 compile한다. default = yes, required No
includeJavaRuntime -- 실행되는 VM으로부터 run-time lib를 포함하여 컴파일한다. defaults to no. Required No
fork -- 외부의 JDK compiler를 사용하여 javac를 수행한다. defaults to no. required No
memoryInitialSize -- VM상의 초기 메모리 사이즈를 설정한다. (examples: 83886080, 81920k, or 80m) , required No
memoryMaximumSize -- VM상의 최대 메모리 사이즈를 정한다. externally javac일 경우 사용되면 다른경우는 무시된다.
(examples: 83886080, 81920k, or 80m) No
failonerror -- 컴파일 에러가 발생했을 경우 계속 컴파일을 시도할것인지를 결정. defaults to true. required No
source -- command line switch로 -source를 사용한다. No


Examples
 <javac srcdir="${src}"
        destdir="${build}"
        classpath="xyz.jar"
        debug="on"
 />
${src} directory에 있는 모든 .java파일을 xyz.jar를 이용하여 compile한후 debug 정보는 연 상황에서 build디렉토리에
class파일들을 위치시킨다.

-------------------------------------------------------------------------
 <javac srcdir="${src}"
        destdir="${build}"
        includes="mypackage/p1/**,mypackage/p2/**"
        excludes="mypackage/p1/testpackage/**"
        classpath="xyz.jar"
        debug="on"
 />

  ${src} directory의 파일들을 컴파일하는데 조건은 xyz.jar를 클래스패스로 이용하고, mypackage/p1/**,mypackage/p2/**패턴을
  따르는 소스(.java)를 포함하고, mypackage/p1/testpackage/**는 컴파일 대상에서 제외된다.


 <javac srcdir="${src}:${src2}"
        destdir="${build}"
        includes="mypackage/p1/**,mypackage/p2/**"
        excludes="mypackage/p1/testpackage/**"
        classpath="xyz.jar"
        debug="on"
 />

 2개의 source path를 사용하여 compile하도록 한다. 나머지 방법은 위의 방법과 동일하다.
위의 방법은 아래와 같이 재구성되어질수 있다.
 <javac destdir="${build}"
        classpath="xyz.jar"
        debug="on">
   <src path="${src}"/>
   <src path="${src2}"/>
   <include name="mypackage/p1/**"/>
   <include name="mypackage/p2/**"/>
   <exclude name="mypackage/p1/testpackage/**"/>
 </javac>

추가 ANT 메뉴얼
http://50001.com/sub/down/Ant_manual_1.mht
http://50001.com/sub/down/Ant_manual_2.mht


1 2 

카테고리

분류 전체보기 (46)
Technic (5)
Language (16)
Database (8)
System (5)
Algorithm (1)
Design (1)
Tool (3)
Framework (2)
Network (1)
Utility (1)
SmartPhone (2)

최근에 올라온 글

최근에 달린 댓글

최근에 받은 트랙백

달력

«   2025/08   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31

글 보관함