2. Hello ant!! -신중섭

이종철 0 3,344 2006.05.23 22:57
2. Hello ant!!
 
 
게으름과 망각의 동물인 저로서 엔트 강좌를 완존히 까먹어 부렀네요..

오늘 운영자님의 독촉 메일을 받고 이렇게 다시 올립니다...

지켜질지 모르겠지만 생각나는대로 강좌를 올리겠습니다...

지성.. 꾸벅~~

이번엔 ant를 이용한 간단한 빌드 파일을 만들어보자?

빌드 파일하면  리눅스나 유닉스를 다뤄본 사람들은 make파일을 생각할 것이다. 맞다.. ant에서도 빌드에 관련된 사항들을 모두 make파일 처럼 스크립트로 작성하여 실행한다. 그럼 make를 쓰면 되지 왜 ant를? 이윤 간단하다. make는 어려운 쉘스크립트로 작성해야 하지만 ant는 누구나 쓰기 쉬운 xml언어로 만들기 때문이다. 또한 자바 에플리케이션에 최적화 되어 있기 때문에 자바로 개발한 프로그램이라면 ant를 쓰면 편리할 것이다. 물론 자바 뿐만 아니라 C/C++과 같은 다른 언어들도 가능하고 심지어 .net도 ant를 통해 빌드 할 수 있다.

하지만 xml을 써본적도 없는데 머가 쉽단 말인가... 하는 사람들도 있지만 xml 기본적인 사항을 몰라도 빌드 스크립트를 작성하는데 무방하다...

자 그럼 일단 xml기반 문서에 대해서 잠시 알아보면 xml은 무조건 <?xml version="1.0" encoding="euc-kr" ?>과 같은 지시자로서 문서를 시작해야 한다. 의미는 별거 없다.. 이문서는 xml문서다.. 라고 선언하는 거라는 정도만 알면 된다. 그리고 html문서가 <html></html>로 이루어 지듯이 xml은 최상위 엘레멘트가 존재해야 한다. 즉... <project></project>라는 최상위 엘레멘트가 정해지면 여타의 엘레멘트들은 project 엘레멘트 안에 모두 쓸어 넣어야 한다는 것이다. 그리고 html에서 태그라는 넘들은 xml에선 element라고 부른다. 뭐 태그라고 해도 무방하다. 또한 ?은 예약어로 쓰이기 때문에 엘레멘트 내에서는 절대 써서는 안된다. 그외에 규칙들이 많지만 천천히 알아보기로 하고 일단은 빌드 파일 구조를 보고 간단한 빌드 파일을 만들어 보자.

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

<project name="test" default="all">
    <target name="all" depends="a, b">   
    </target>
    <target name="a">
    </target>
    <target name="b" depends="a">
    </target>
</project>

이것은 빌드파일의 뼈대만을 나타낸 것이다. 빌드 파일은 크게 최상위 엘레멘트로 project를 갖는다. 말그대로 IDE툴에서 쓰이는 project와 같은 개념이다. 모든 에플리에이션 빌드는 프로젝트가 가장 큰 단위라고 볼 수 있다. html의 태그도 attribute를 가지고 있다. 속성이라고들 한다. xml도 마찬가지로 속성을 갖는다. 여기서 보다시피 project의 name과 default는 속성들이다. name은 당연히 프로젝트 이름이 되겠고 default는 빌드파일 실행시 기초적으로 수행되는 target명을 말한다.

그럼 target은 무엇인가? 빌드를 수행할때 분류 되는 작업단위라고 하자. 즉, 소스를 임시폴더로 복사하고 자바 컴파일로 컴파일하고... 이런 전체 빌드 작업을 단위별로 나누어서 실행하게 되는데 이런 단위를 target이라고 명명하고 있다. target의 속성은 name과 depends가 있다. 이외에 것들은 차차 알아가보자. name은 해당 target의 이름이고 depends는 타겟간의 종속관계를 나타낸다. 그럼 종속관계는 무엇인가?

위의 빌드 파일을 보면

3개의 작업단위를 갖게 된다. a, b, all 이런 단위로 타겟이 정해져 있다. 그런데 b는 a에 종속되어 있다. 종속되어 있다는 것은 종속되어 있는 타겟이 실행 되어야 자기 자신도 실행 될 수 있다는 것이다. 즉, a의 타깃이 실행 되어야 다음에 b타겟이 실행될 수 있다고 볼 수 있다. 그럼 all은? all은 a,b 둘다에 종속적이다. 즉, a,b 둘다 실행되어야 비로서 all이 실행되는 것이다. 즉, all이란 이름으로 타겟을 정하면 이녀석은 전체 타겟을 실행시키는 타겟으로 쓰이면 될 것이다.

자 그럼 기본적인 빌드 파일을 한번 실행 해보자...

일단은 작업폴더를 만들어 보자...

D:\amtFolder라고 테스트 폴더를 만든 후, 그 밑에 helloant폴더를 만들어 보자. 그리고 위의 텍스트를 아무 텍스트 편집기로 작성한 후 test.xml이라고 저장한 후에 프롬프트 상에서

D:\antFolder\helloAnt>ant -buildfile test.xml

이렇게 쳐보자 ant는 ant를 실행하는 실행 스크립트다. 이녀석에 대해 알고 싶으면 %ANT_HOME%\bin폴더에 가서 ant.bat 파일을 열어보면 된다. -buildfile은 빌드파일 이름을 정해주는 옵션이다. 즉 -buildfile test.xml이란 것은 test.xml을 빌드파일로 쓰겠다는 뜻이 된다.

실행 결과는...

Buildfile: test.xml

a:

b:

all:

BUILD SUCCESSFUL
Total time: 0 seconds

이런 형식으로 콘솔상에서 출력될 것이다. 보시다 시피 첫번째 행은 빌드 파일이 test.xml이라고 보여주고 있고 a: b: all: 이 행들은 차래대로 타켓이 실행되었음을 보여준다. 타겟 실행시 에러가 발생하지 않는다면 성공메시지를 뿌려주고 총 빌드 타임을 보여주게 된다.

자.. 이제 좀 빌드 스크립트에 대한 이해가 되었는지....

다시 정리한 내용들을 정리 해보자...

1) project element : 빌드 스크립트의 최상위 엘레멘트. 빌드는 IDE툴에서 처럼 project로 이루어진다.

속성

name : 프로젝트 이름

default : default 타겟 이름

2) target element : 전체 빌드의 작업단위

속성

name : 타겟 이름

depends : 종속관계


build파일은 타겟 간의 논리적인 관계에 의해서 얽혀있다. 즉, 작업순서에 따른 빌드 전략이 필요할 것이다. 여기 까지 어느정도의 빌드 스크립트 구조를 알아보고 다음에는 Hello ant!! 예제를 풀어보기로 하겠다...
 

 

Comments