티스토리 뷰
본 포스팅은 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.1 ant project 생성 (File -> New -> Other 선택 : java project 생성)
(into folder -> Browsw 선택 : 프로젝트 선택)
(추가한 java project AntTest 선택 -> OK)
(추가 된 Project 확인 -> Finish)
(java project 확인 : 추가 된 ant directory 확인)
(자주 사용하는 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.1 ant build (build.xml 파일 우 클릭 -> Run As -> Ant Buld : ant build setting)
(등록한 target 중 실행 할 name 선택 -> Run)
(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하여 운영 합니다.
고맙습니다.
'⑤ 개발, 데이터베이스 > ⓒ CI CD' 카테고리의 다른 글
[TroubleShooting] fatal: Not a git repository (or any of the parent directories): .git (0) | 2019.09.17 |
---|---|
[GitHub Pages] Github Pages 생성 및 관리 (0) | 2019.09.16 |
[Github] Eclipse 연동하기 (0) | 2019.01.27 |
[ALM] 2) SVN을 통한 형상관리 (svn 활용) (0) | 2018.07.16 |
[ALM] 1) SVN을 통한 형상관리 (svn 설치 및 Eclipse 연동) (0) | 2018.07.16 |
- Total
- Today
- Yesterday
- 아키텍처
- JEUS7
- Docker
- git
- jeus
- 쿠버네티스
- 오픈스택
- Da
- JEUS6
- API Gateway
- SA
- openstack tenant
- MSA
- JBoss
- openstack token issue
- Architecture
- OpenStack
- kubernetes
- aws
- apache
- TA
- nodejs
- webtob
- 마이크로서비스 아키텍처
- SWA
- aa
- wildfly
- k8s
- node.js
- 마이크로서비스
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |