티스토리 뷰

728x90
반응형

 포스팅은 Eclipse를 이용한 Ant 활용 가이드입니다.


 

1.1 ant Install (help -> Install New Software 선택)



 

(Add -> Name, Location 등록 : mirror 사이트 추가)

Name : indigo, Location : http://download.eclipse.org/releases/indigo

 

(Enterprise Development -> Next : install package)

install software : indigo - download.eclipse.org/releases/indigo 추가 (mirror 사이트는 다수 존재 함)

web, xml, java EE and OSGi Enterprise Development 항목 안의 Eclipse Java EE Developer Tools ant가 포함되어 있음 Install 진행



 

 

1.2 Java Project 생성 (File -> New -> Other 선택 : java project 생성)



 

(Java Project -> Next 선택)



 

(Java Project Name)



(Finish Java Project)



(java project 확인)



(src dir에서 우 클릭 -> New -> Class : class file 생성)



(Name -> Finish : class name 입력 후 완료)



 

 

2. ant 활용 방법

2.1 ant project 생성 (File -> New -> Other 선택 : java project 생성)



(ant search or web services dir 선택 -> Ant Files -> Next 클릭 : ant file 생성)

 



 

(into folder -> Browsw 선택 : 프로젝트 선택)



 

(추가한 java project AntTest 선택 -> OK)



(추가 된 Project 확인 -> Finish)



(java project 확인 : 추가 된 ant directory 확인)



 

3. ant 설정

3.1 ant directory



ant directory에는 초기 생성 시 properties, xml 파일이 생성되어 있으며, 해당 file의 name은 변경이 가능

 

(자주 사용하는 build.xml로 파일 명 변경)



 

 

3.2 build.xml

ex) build.xml

<?xml version="1.0"?>

 

<project default="main" basedir="." name="TestAnt">

      <description>

             NRSON Ant Example

      </description>

 

      <property name="src" location="../src"/>

      <property name="build" location="build"/>

      <property name="dist" location="dist"/>

      <property name="backup" location="backup"/>

     

      <target name="init">

             <mkdir dir="${dist}" />

             <mkdir dir="${build}" />

             <tstamp>

                     <format property="DSTAMP" pattern="yyyyMMdd" />

                     <format property="TSTAMP" pattern="HHmm"/>

             </tstamp>

      </target>

     

      <target name="backup" depends="init">

             <mkdir dir="${backup}/${DSTAMP}" />

             <copy todir="${backup}/${DSTAMP}">

                     <fileset dir="${src}" />

             </copy>

      </target>

     

      <target name="compile" depends="backup" description="compile the source">

             <javac srcdir="${src}" destdir="${build}" />

      </target>

     

      <target name="dist" depends="compile" description="generate the description">

             <mkdir dir="${dist}/lib" />

             <jar jarfile="${dist}/lib/main_${DSTAMP}.jar" basedir="${build}" />

      </target>

     

      <target name="clean" description="clean up">

             <delete dir="${build}" />

             <delete dir="${dist}" />

      </target>

     

      <target name="main" >

              <wsgen/>

      </target>

 

</project>

 

3.3 속성

(Target)

PROJECT 안에 최소 하나의 TARGET 엘레멘탈이 존재해야 하며, PROJECT 엘레멘탈에는 default , basedir , name 등의 속성들이 존재 함

기본적으로 basedir = "." 과 같이 이 ant 빌드에 사용되는 프로젝트의 root 를 설정하고, name 란에 현재 빌드의 타이틀을 입력

TARGET TASK 즉 작업을 모아두는 컨테이너이고 각 컨테이너간에 의존(DEPEND) 속성을 주어 하나의 빌드 프로세스를 구성 함

(많이 사용하는 TASK)

- TSTAMP : 날짜 시간 등을 제공하는 TASK

- COPY     : FILE 원하는 폴더를 지정하여 복사하는 TASK

- MKDIR    : dir 속성으로 폴더를 만드는 TASK

- JAR        : JAR 생성 TASK

- DELETE  디렉토리  소스 삭제 TASK

- JAVAC    : SOURCE COMPILE TASK

 

생성한  target의 역할

INIT (실행  필요한 TASK 기술)

INIT 에서는 mkdir로 dist, build directory를 만들고, dstamp TASK "yyyyMMdd" 형식의 프로퍼티 tstamp TASK"HHmm" 형식의 PROPERTY를 생성합니다.

포맷방식은 java java.text.SimpleDateFormat api에서 기술하는 포맷방식과 같습니다.

BACKUP (SRC 백업 TASK 기술)

backup 에서는 depend = "init"으로 실행  init을 먼저 호출하도록 되어있습니다.

백업할 위치를 PROPERTY로 받아와 dir 속성에 기술하고 그 하위 폴더로 ${DSTAMP} 구문을 넣어 현재 일자로 생성되게 기술하였습니다.

COPY TASK를 사용하여 toDir 위치로 fileset에 정의된 위치에서 복사합니다.

COMPILE (JAVA FILE COMPILE TASK 기술)

JAVAC TASK를 사용 srcdir 속성에 .java source 위치 기술 , destdir 속성에 컴파일  .class 파일을 저장할 위치를 지정한다. depend = "backup"으로 실행 전 backup을 먼저 호출하도록 되어있습니다.

DIST (COMPILE  CLASS FILE 배포 TASK 기술)

JAR 파일을 저장할 폴더를 만들고 JAR TASK를 사용 jarfile 속성에 저장할 위치에 파일 명을 기술하였습니다.

ANT_${DSTAMP}.jar 이용하여 ANT뒤에 현재일자를 넣어 JAR를 생성한다. depend = "compile"로 실행 전 compile을 먼저 호출하도록 되어있습니다.

CLEAN (build 수행  생성  dir, files 삭제 TASK 기술)

BUILD , DIST LOCATION에 정의된 위치의 파일을 삭제한다. Backup dir 삭제 하지 않습니다.

 

(Property)

PROPERTY는 TARGET 컨테이너 하위 엘레멘탈이 아닌 PROJECT 안에서 독립적으로 쓰임, name 에 해당 property 이름, location 에 위치를 지정 합니다.

각 TARGET안에 기술된 TASK 코드를 보면 ${...} 형태의 구문을 볼 수 있는데 이것은 소스코드 제일 위에서 정의한 PROPERTY 값들입니다.

src java source 위치

build  java 가 컴파일 되고 난  .class 파일 저장위치

dist(discribution:배포 src에 위치한 모든 소스를 jar생성저장하는 위치

backup backup .java source 저장 위치

 

(Depends)

dist를 실행하면 compile compile에서도 마찬가지 depend  backup으로 되어있으므로 backup 호출 backup도 마찬가지 init을 호출 합니다만약 dist를 실행치 않고 컴파일만 하려고 compile을 실행한다면 init - backup - compile 까지 실행 됩니다.

 

4. ant 실행

4.1 ant build (build.xml 파일 우 클릭 -> Run As -> Ant Buld : ant build setting)



 

(등록한 target 중 실행 할 name 선택 -> Run)



 

4.2 실행 결과



 

(Console Result)

Buildfile: D:\eclipse\workspace\AntTest\ant\build.xml

init:

    [mkdir] Created dir: D:\eclipse\workspace\AntTest\ant\dist

    [mkdir] Created dir: D:\eclipse\workspace\AntTest\ant\build

backup:

    [mkdir] Created dir: D:\eclipse\workspace\AntTest\ant\backup\20140409

     [copy] Copying 1 file to D:\eclipse\workspace\AntTest\ant\backup\20140409

compile:

    [javac] D:\eclipse\workspace\AntTest\ant\build.xml:30: warning: 'includeantruntime' was not set, defaulting to build.sysclasspath=last; set to false for repeatable builds

    [javac] Compiling 1 source file to D:\eclipse\workspace\AntTest\ant\build

dist:

    [mkdir] Created dir: D:\eclipse\workspace\AntTest\ant\dist\lib

      [jar] Building jar: D:\eclipse\workspace\AntTest\ant\dist\lib\main_20140409.jar

BUILD SUCCESSFUL

Total time: 875 milliseconds

 

dist target을 선택하여 Run을 구동한 결과입니다.

dist target depends compile target, compile target depends backup target, backup target depends init target을 실행 하며실행 순서는 역순인 init -> backup -> compile -> dist 순으로 실행 됩니다.


(ant directory 확인)



TASK mkdir로 생성 한 backup, dist, build dir이 생성되었으며, backup에는 오늘 날짜의 dir과 현재 java file, build dir에는 compile  class file, dist에는 lib dir class file jar로 묶은 패키지가 생성되어 있습니다.

 

Lib로 묶인 오늘날짜의 jar파일을 JEUS application 경로의 WEB-INF/lib에 위치 시켜 deploy하여 운영 합니다.

고맙습니다.

728x90
반응형