쎈과 서연이의 행방불명 난 이런 사람이야. 지금 이 시간에는 말이지…

74/093

Eclipse Ant 로 빌드 자동화 시키기

Ant 소개

  Ant 는 빌드 자동화 도구입니다. XML 형태의 간단한 Ant 문서를 제작해서 그 동안 힘들게 힘들게 해야 했던 컴파일, 폴더 분류, FTP 업로드, zip 파일 압축 등의 작업들을 일괄적으로 처리할 수 있게 해주는 역할을 합니다. 간단하고 단순한 기능이지만 많은 작업시간을 소모하던 단순 반복 작업을 아주 짧게 줄여줍니다.

 

Ant 꺼내기

  Ant는 최근 Eclipse 패키지에는 기본으로 포함되어 있습니다. FDT의 경우에도 Ant는 중요 기본 기능의 하나로 추천되어지고 있고, Flex builder 역시 Flex Ant task 를 통해서 Ant build 를 추천하고 있습니다. 최근 독립설치형 Flex builder 패키지에 Ant view 가 포함되어 지는지는 잘 모르겠네요. 제 컴퓨터에 설치된 Flex builder 에는 Ant view 가 없습니다. 이 내용은 일단 Ant view 가 기본적으로 있는 상태를 전제로 하고 진행하도록 하겠습니다.

 

image

 

  Ant view 가 없다면 Eclipse 의 Show View > Other... 를 클릭합니다.

 

image

 

  그런 다음 Ant 를 선택하고 OK 를 눌러 view 를 추가해줍니다.

 

image

 

  이런 모양의 view 가 추가됩니다.

 

 

기본적인 Ant Build 만들어보기

image

 

  새 파일을 만듭니다.

 

image

 

  Ant 파일 만들기는 기본적으로 없으므로 File 을 선택해서 만들도록 합니다.

 

image

 

  Ant 는 xml 형태의 문서이기 때문에 *.xml 확장자로 만들어도 됩니다. 하지만, Ant Editor 를 지원받기 위해서는 *.ant 의 확장자로 만드는 것이 더 좋습니다.

 

image

 

  위에 보이는 형태가 Ant 의 가장 기본적인 규칙입니다. <project> 안에 <target> 들이 주욱 위치하게 되는 거죠.

 

  이제 Ant view 에 만들어진 build 를 등록시켜 보겠습니다.

 

image

 

  Add Buildfiles를 눌러서

 

image

 

  만들어놓은 ant build를 선택합니다.

 

image

 

  그러면 위와 같이 나타나게 되는데요.

 

clip_image022

 

  만들어진 ant tag 들이 어떤 식으로 적용되는지를 확인하기 위해서 하이라이트 표시를 해주었습니다.

 

  만들어진 <target> 중에서 build 를 더블클릭 해보면

 

image

 

  위와 같이 console 상에 <echo> 를 통한 문자열 출력이 되게 됩니다.

 

  Ant 는 이런 식으로 build 할 내역들을 <target> 안에 기술하고, 만들어진 build 파일을 ant view 상에 등록한 뒤, 간단하게 더블클릭 해서 실행시키는 구조를 가지고 있습니다.

 

 

환경변수 설정

image

 

  위와 같은 방식으로 <property> 를 생성한 다음 ${property_name} 아래쪽에서 사용할 수도 있습니다.

 

  하지만, 이런 식으로 build file 내부에 환경변수를 포함시키는 것은 다양한 환경에서 빌드구조를 동일화 시킬 때 여러모로 불편을 만들게 됩니다. 예를 들어 ${FLEX_SDK} 를 환경변수를 <property>를 통해서 정의하고, SVN 등을 통해서 프로젝트 팀원들간에 공통화된 빌드 파일을 사용할 때 각각의 sdk 위치가 다르다는 문제가 발생할 수 있겠죠. “C드라이브 최상위로 통일해~” 라고 할 수도 있겠지만 그런 것보다는 훨씬 괜찮은 방법이 있습니다.

 

image

 

  새롭게 test.properties 파일을 만들어줍니다.

 

image

 

  properties 파일 내부에 위와 같이 ment 를 정의해주고

 

image

 

  위와 같이 파일을 연결시켜 줍니다. 환경변수들을 이렇게 분리시켜놓는 것은 다수의 구성원들이 다양한 환경에서 build 파일을 공유해서 동일한 방식으로 결과물을 뽑아낼 수 있게 해줍니다.

 

여러 개의 <target> 들을 일괄 실행시키기

image

 

  위와 같이 <target> 에서 depends 를 사용해서 여러 개의 target name 들을 일괄적으로 적어준 다음 정의해 준 full build <target> 을 더블 클릭하면

 

image

 

  보이는 것처럼 연결해준 target 들이 순차적으로 실행됩니다. 이런 방식을 통해서 각각 기능별로 <target> 을 만들고, 그것을 다시 연결해서 사용하는 방식으로 빌드를 구성함으로써 <target> 의 정의가 중복되는 것을 방지할 수 있습니다.

 

swf 컴파일 하기

image 

 

  테스트를 위해 위와 같은 properties 를 만들어줍니다.

 

image

 

  그리고, 위와 같은 간단한 클래스를 작성해 줍니다.

 

image

 

  그리고, 위와 같은 <target> 을 만들어줍니다.

 

  첫 번째는 MXMLC 를 직접적으로 사용해서 컴파일 하고 있습니다. Flex SDK 의 ant/lib 에 들어있는 flexTasks.jar 을 사용해서 컴파일을 할 수도 있지만, 조금 사용법이 번거롭고, 버그가 많아서 개인적으로는 <exec> 을 통해서 직접 사용하는 편입니다. MXMLC 의 옵션은 http://flexstuff.googlepages.com/FlexCompilerOptions.html 이 주소에서 알아보실 수 있습니다.

 

  두 번째는 FDT 에서 지원해주는 ant 기능들 입니다. <fdt.launch.application> 이 컴파일이고, <fdt.startDebugger> 는 디버그 시작을 의미하고, <fdt.extSWFViewer.startSWF> 는 swf 를 실행하게 합니다. (아래에 소개할 FTP 업로드 이후에 web browser 상태에서 디버깅을 하길 원한다면 <fdt.browse> 로 대체해서 사용할 수도 있습니다.)

 

  첫 번째 target 을 더블클릭 해보면 정상적으로 swf 가 생성되는 것을 확인할 수 있고, 두 번째의 경우는 swf 생성 이후 console 상에 trace 메시지가 찍히는 것을 확인 할 수 있습니다.

 

  지금은 한 개의 swf 만을 생성했지만, 프로젝트에서 한꺼번에 컴파일 시킬 swf 가 많아질수록 이런 Ant 를 통한 일괄 빌드는 많은 시간을 절약할 수 있게 해줍니다.

 

swc 컴파일 하기

image

 

  위와 같은 <target> 을 추가해줍니다. –compiler.source-path 는 src 폴더를 지정하게 되고, –include-sources 는 swc 에 포함시킬 package 를 지정하게 됩니다. 만일 –compiler.source-path src 에 –include-sources src/com/ssen 을 지정한다면 com.ssen.* 에 해당하고 해당 패키지를 구성하는데 필요한 다른 라이브러리들만이 swc 에 포함되게 됩니다.

 

asdoc 퍼블리싱 하기

image

 

  위와 같은 <target> 을 구성한 뒤에 실행시켜보면 ${output.asdoc} 으로 지정한 위치에 asdoc 이 생성되어 있는 것을 확인 할 수 있습니다.

 

image

 

  Test.as 에 주석으로 넣은 내용들이 문서로 정상적으로 출력되는 것을 확인할 수 있습니다.

 

FTP 업로드 하기

  FTP 업로드를 사용하기 위해서는 두 개의 라이브러리가 필요합니다. 아래의 웹사이트들에서 해당 라이브러리들을 다운받도록 합니다.

 

  Commons net : http://commons.apache.org/downloads/download_net.cgi

 

image

 

  압축파일을 보면 위와 같은 구성으로 되어있을 겁니다. 파일들 중 commons-net-2.0.jar 과 commons-net-ftp-2.0.jar 파일을 빼서 적절한 위치에 넣어두도록 합니다.

 

image

 

  이 후, 이클립스 설정에서 Ant > Runtime 으로 들어간 이후, Ant Home Entries 를 선택하고 Add External JARs… 를 클릭해서 빼놓은 jar 파일들을 가져오도록 합니다.

 

image

 

  그리고, 위와 같이 <target> 을 구성한 뒤에 더블클릭을 해서 ftp 업로드에 대한 메시지를 console 상에서 확인하면

 

image

 

  FTP 로 접속해서 정상적으로 업로드가 된 것을 확인할 수 있습니다.

 

 

마무리 하며

  Ant 는 지금까지 본 것처럼 간단한 셋팅을 통해서 매 번 지루하게 반복해야 하는 작업들을 쉽게 처리할 수 있게 해줍니다. 그리고, 위에 적어놓은 기능들 이외에도 간단한 검색을 통해서 이미 누군가가 만들어서 공개해놓은 수많은 스크립트들을 활용할 수 있으므로, 딱히 복잡한 공부가 필요하지도 않습니다.

 

  점점 대형화 추세에 있는 RIA 개발에 있어서 Ant 는 선택이 아닌, 필수라고 할 수 있을 것 같네요.

태그: 3 덧글
   
FireStats icon Powered by FireStats