제2회 Ant그리고Java의 빌드를 간단하게 하는
오카모토 타카시
NTT데이터 기술개발 본부/Ja-Jakarta Project
2003/1/16
빌드 툴이라고 하면(자) ,make를 떠올리는 (분)편도 많다고 생각합니다만 ,Ant의 빌드 파일은XML으로 기술한다고 하는 특징이 있어 ,Java라는 친화성도 높아지고 있습니다. 전술의 독자 조사에 의하면 , 현재 이용중의 개발툴로서 「에디터+JDK」가 가장 많았습니다만 , 확실히 이 개발 패턴은Ant을 사용하는 것이 왕도라고 할 수가 있겠지요.
Borland JBuilder등의IDE를 사용하고 있는 (분)편은 , 「IDE을 사용해 빌드 하면Ant은 필요없는 것이 아닌가?」라고 생각될지도 모릅니다. 그러나 , 예를 들면 ,Windows환경에서 개발을 실시해 , 동작 확인을UNIX위에서 실시한다고 하는 크로스 카이하츠를 실시하고 있는 경우 , 원시 코드의 불편을 찾아낼 때마다Windows위에서 빌드 해 ,UNIX환경에 카피해 동작 확인한다……라고 한 시간이 드는 작업을 반복하고 있을 것은 없습니까? 동작 확인을 행하기 위한 머신이 네트워크에 접속되고 있는 경우는 아직 좋습니다만 , 그렇지 않은 경우는 플로피 디스크나CD-R에 기입하는 등 , 수고가 배증합니다.
이러한 때에도 ,Ant를 이용하는 것으로써 ,JDK가 인스톨 된 환경이면 , 간단하게 소스로부터 빌드 할 수가 있어 파일 카피의 수고를 줄일 수 있고 개발 효율이 오릅니다. 그리고 , 최근의 것IDE은Ant을 서포트하고 있는 것도 많기 때문에 ,Ant그리고 작성해 두면 , 다른IDE위에서 간단하게 빌드 할 수도 있습니다.
![]() |
Ant(을)를 사용해 보자 |
「백문은 일견 밖에않고」라고 하는 것으로 , 우선은Ant을 사용해 봅시다. Ant(을)를Jakarta의 사이트http://www.apache.org/dist/ant/binaries/로 부터 다운로드해 , 적당한 디렉토리에 해동해 주세요. 필자의 환경에서는 , 집필시의 최신 버젼1.5.1을/usr/local/jakarta-ant-1.5.1(Windows의 경우는 ,c:\usr\local\jakarta-ant-1.5.1) 에 전개했습니다.
그럼 , 샘플을 다운로드해 실제로 시험해 봅시다. 여기로부터 다운로드해 주세요.
Ant의 환경 설정을 실시합니다. UNIX환경의 경우 , 환경 변수JAVA_HOME에JDK의 인스톨 디렉토리를 ,ANT_HOME에Ant의 인스톨 디렉토리를 설정해 ,PATH를$ANT_HOME/bin에 통하면 준비는 완료입니다. 준비를 할 수 있으면(자) , 아래와 같이 샘플을 전개해 ,ant커멘드를 실행해 주세요.
●UNIX(bash) 의 경우 |
$ export ANT_HOME=/usr/local/jakarta-ant-1.5.1 |
최초의 환경 변수의 설정은 ,.bashrc등에 써 두면(자) 좋을 것입니다.
Windows의 환경의 경우는 , 유저 환경 변수의JAVA_HOME,ANT_HOME,PATH를 각각 , 아래와 같이 설정합니다.
JAVA_HOME | c:\j2sdk1.4.1_01(J2SDK의 인스톨 디렉토리) |
ANT_HOME | c:\usr\local\jakarta-ant-1.5.1 |
PATH | c:\usr\local\jakarta-ant-1.5.1\bin |
환경 설정을 할 수 있으면(자) , 이하와 같이ant커멘드를 실행해 주세요. 다음과 같은 실행 결과를 얻을 수 있을 것입니다.
●Windows의 경우 |
C:\tmp> jar xvf hello-ant.zip compile: compile타겟의 실행 |
이것으로 ,Java소스의 컴파일과jar파일foo-1.0.jar의 작성을 했습니다. Ant(은)는 실행한 커런트 디렉토리에 있는 빌드 파일build.xml을 읽어들여 , 빌드를 실행합니다. 이 예에서는 , 다음에 소개하는 빌드의 실행 단위 「타겟」의 디폴트치가jar되고 있으므로 ,jar타겟의 실행과jar타겟으로 의존한compile타겟을 실행하고 있습니다.
그럼 ,classes디렉토리아래의 것Foo1.class을 실행 배어 봅시다. 이하의 실행 결과를 얻을 수 있을 것입니다.
●Windows의 경우 |
C:\tmp\hello-ant> cd classes |
디폴트에서는 실행됩니다만 , 샘플에는javadoc의 생성 프로세스도 포함하고 있기 (위해)때문에 , 다음과 같이javadoc타겟을 지정해 실행하면(자) ,api디렉토리아래에JavaDoc가 생성됩니다.
ant javadoc |
그리고 ,build.xml이외의 빌드 파일을 이용하고 싶은 경우는 ,-f옵션으로 ,
ant -f [빌드 파일명] |
으로 , 빌드 파일을 지정할 수도 있습니다.
--다음페이지--![]() |
Ant의 특징 |
Ant의 구체적인 해설에 들어가기 전에 ,Ant의 특징에 대해 정리합시다. Ant(을)를 사용하면(자) 이하와 같은 메리트가 있습니다.
(1) 복잡한 컴파일 프로세스를 간략화 가능
Ant(을)를 이용하면(자) , 컴파일 ,jar파일
작성등의 빌드 순서를 형식화할 수 있으므로 , 복잡한 빌드 순서를 간략화할 수 있습니다. 반대로 , 간단한 빌드 커멘드로 컴파일
할 수 있는 경우(예를 들면 , 원시 파일이1개 밖에 없고 ,javac커멘드를1회 실행하는 것만으로 컴파일 가능한 경우등 ) 는
, 빌드 파일의 작성에 시간이 들어 , 오히려 작업 부하가 증가합니다.
(2) 풍부한Java개발툴에의 대응
javac,jar,rmic,war,native2ascii등의
커멘드의 실행에 대응하고 있습니다. Ant그럼 , 각각의 커멘드를 실행하기 위한 「태스크」라고 불리는 클래스가 준비되어
있습니다. 그리고 , 최근에는 ,JavaBeans으로부터EJB를 생성하는xdoclet/vdoclet등 ,Jakarta이외로부터도
태스크가 제공되고 있습니다.
(3) 처리 프로세스의 그룹화
소스의 컴파일이나jar파일의 생성 ,javadoc생성 등 , 있는 결정된
처리를 타겟으로 정리할 수가 있습니다. 예를 들면 ,javac태스크와native2ascii태스크를 정리해 컴파일 타겟으로 할
수가 있습니다. 타겟으로보다 , 그때그때로 필요하게 되는 처리만을 간단하게 선택해 실행할 수 있게 되어 있습니다.
(4) 의존관계(dependencies)의 해결
예를 들면jar파일의 작성 전에는 , 소스의 컴파일이
필요합니다. Ant(은)는 이러한 처리의 의존관계(dependencies)을 해결할 수 있습니다. 그 때문에jar파일을 작성하기
전에 , 소스가 컴파일 되고 있는지 아닌지를 의식할 필요가 없어집니다.
(5) 인크리멘탈인 빌드
빌드 처리를 실시하는 태스크는 , 기본적으로 타임 스탬프를 조사해 처리가 필요한 파일만 처리합니다. 예를 들면 , 한 번 소스를 컴파일 한 다음에 소스를 변경했을 경우 , 변경이 있던 소스만을 재컴파일 할 수가 있습니다.
![]() |
Ant의 사용법을make과 비교해 이해한다 |
그럼 ,make그리고 이용하는Makefile과Ant의 빌드 파일을 대비하면서 ,Ant의 사용법을 보고 갑시다. 우선은 ,make그리고 사용하는Makefile(리스트1)를 봐 주세요 (덧붙여 리스트1와 리스트2는 기능마다 분류 하고 있습니다 ).
빨강 | 변수 설정 |
파랑 | jar파일의 생성 |
초록 | 컴파일 실행 |
보라색 | javadoc생성 |
회색 | 파일의 클린 업 |
이Makefile를Ant의 빌드 파일(build.xml) 에 고쳐 쓰면(자) 다음과 같이 됩니다 (방금전 실행했다Build.xml를 조금 간략화하고 있습니다 ).
리스트2 Ant의 빌드 파일(build.xml) |
|
가장 큰 차이로서Makefile는 커멘드의 나열로 기술되고 있습니다만 ,Ant의 빌드 파일은XML으로 기술되고 있습니다. 구체적으로 기능 마다 차이를 봅시다.
■디폴트의 처리의 지정
여기서의 디폴트의 처리란 , 옵션의 지정을 생략 했을 때 ,Ant라고Make가 무슨 처리를 실시하는지 , 라고 하는 것을
가리킵니다. 빌드 커멘드를 실행했을 때의 디폴트의 처리는 ,Make의 경우 , 제일 처음에 기술된 처리가 됩니다만
,Ant그럼project태그로 지정합니다. 상기의 예에서는 ,jar파일 작성을 디폴트의 처리로 하고 있습니다.
Makefile파일에서는jar:$(JAR)의 부분이 ,Ant의 빌드 파일에서는
■변수의 설정
Ant도Make도 빌드 파일 중(안)에서 자유롭게 참조 가능한 변수를 선언할 수가 있습니다. make(은)는 ,Makefile의 선두의 블록으로 이하와 같이 변수 설정을 실시합니다.
변수명=치
그리고 , 이하와 같이 변수의 참조를 실시합니다.
$(변수명)
이것에 대해서 ,Ant는 , 이하와 같이property태그를 사용해 , 변수(Ant에서는 변수를 통상 프롭퍼티라고 부릅니다 ) 의 설정을 실시합니다.
그리고 , 이하와 같이 변수의 참조를 실시합니다.
${변수명}
■커멘드의 실행
make그럼 , 예를 들면 아래와 같은 기술을 보면 알 수 있도록(듯이) ,mkdir,javac등의 쉘 커멘드를 직접 호출해 처리를 진행시킵니다.
$(BUILD_FILES):$(BUILD_SRC) |
이것에 대해서Ant에서는 , 전술한 것처럼javac,jar,javadoc등 , 실제로 실행하는 커멘드에 대응 지을 수 있었던 태스크를 실행하는 것으로 처리를 진행시켜 나갑니다. 태스크는 , 다음과 같이 표기합니다.
<태스크명 인수(속성)="치" …> |
인수는 , 각 태스크 고유의 값을 받습니다만 , 예를 들면 ,mkdir,delete,copy등의 파일 조작을 실시하는 태스크는 ,dir(디렉토리를 지정한다 ) 등의 공통 인수를 지정할 수 있습니다. 그리고 , 인수는 , 속성과 요소의2종류를 지정할 수 있습니다만 , 기본적으로는 속성에 인수를 설정합니다. 파일의 집합 , 클래스 패스 등은 인수로 지정할 수도 있습니다. 태스크의 구체적인 사용법에 대해서는 , 자세하게 후술 합니다.
■의존관계(dependencies)의 기술
빌드를 실시할 때 ,jar파일의 작성 전에는 , 소스의 컴파일이 필요등의 의존관계(dependencies)가 발생합니다만 ,make도Ant도 의존관계(dependencies)를 기술할 수가 있습니다. Makefile그럼 ,
생성 파일:중간 파일 |
이라고 하는 형식에서 , 의존관계(dependencies)를 기술합니다. make(은)는“:”보다 좌측의 파일의 타임 스탬프와 우측의 파일의 타임 스탬프를 조사해 , 왼쪽에서(보다) 오른쪽의 타임 스탬프가 새로운 경우 , 혹은 , 좌측의 파일이 존재하지 않는 경우 , 커멘드를 실행합니다. 예를 들면 ,
$(JAR):$(BUILD_FILES) |
에 주목하면(자) ,src/foo1.java,src/pkg/foo2.java ($(BUILD_SRC))에 대해서 ,mkdir/javac가 실행됩니다. 생성된 클래스 파일classes/foo1.class classes/pkg/foo2.class ($(BUILD_FILE))에 대해서jar가 실행되어foo.jar ($(JAR))가 생성됩니다.
각 스텝은 , 처리의 필요가 없으면 스킵 됩니다.
주:“jar:$(JAR)”이라고 하는 행은 ,make jar 커멘드로jar파일을 생성하기 위한 굳이 실행하지 않는 더미행입니다.
이것에 대해서 ,Ant는 , 타겟으로 대해 의존관계(dependencies)를 기술해 정의합니다.
|
이 예는 ,Ant이 타겟2을 실행하려고 하면(자) , 타겟1이 실행이 끝난 상태인지 어떤지 조사해 ,
미실행의 경우 |
이라고 하는 동작을 합니다. 여기서 주의가 필요한 것은 ,make은 , 생성된 파일과 소스의 타임 스탬프를 조사해 의존관계(dependencies)를 처리합니다만 , 타겟은 「현재 실행되고 있는Ant으로 벌써 처리되었는지 어떠했는지」를 조사해 파일의 타임 스탬프를 조사하고 있지 않습니다. 즉 ,Ant을 실행할 때 마다 각 타겟은 실행됩니다. 실제로 파일의 타임 스탬프를 조사해 커멘드를 실행할지 어떨지는 , 태스크가 판별합니다.
--다음페이지--![]() |
Ant의 이점 |
그런데 , 여기까지의 이야기를 읽으면(자) , 언뜻 봐 , 「할 수 있는 것은Makefile것과 같지만 ,XML그리고 기술해야 하는 분 ,ant(분)편이 귀찮지?」라고 생각되는 (분)편도 있을지도 모릅니다. 여기까지의 내용을 정리하면(자) ,Ant를 사용하면(자) 다음과 같은 메리트가 있습니다.
(1) 파일의 의존관계(dependencies)를 기술할 필요가 없어진다
태스크가 주어진 각 소스와 생성되는 파일의 타임 스탬프를 조사해 , 처리가 필요한 소스만을 처리해 줍니다. Makefile(와)과 같이1개1개 파일을 지정해 의존관계(dependencies)를 기술할 필요는 없습니다.
(2) 처리 대상이 되는 파일을 개별적으로 기술할 필요는 없다
Makefile그럼
,SRC=foo1.java foo2.java과 같이 개별적으로 파일을 지정할 필요가 있었습니다. 이것에 대해서Ant에서는
,srcdir="..."과 같이 디렉토리를 지정하면 , 그 디렉토리 이하의 모든 파일을 처리 대상으로 해 줍니다.
Makefile그렇지만find을 이용하면 , 어느 디렉토리 이하의 것 *.java에 성냥 하는 파일등을 그룹화 할 수가
있습니다만 , 거기에 비교해도 시간이 들지 않습니다.
다만 , 상기의 메리트는 ,Java의 어플리케이션의 빌드시에 받게 되는 혜택으로 ,C언어의 개발등으로는 ,task으로부터 커멘드 호출을 실시하는 만큼 되어 버려 ,Ant의 혜택은 받을 수 없기 때문에 주의해 주세요.
--다음페이지--![]() |
커멘드를 실행하는 「태스크」의 사용법 |
다음에 ,Ant의 요점인 태스크 중(안)에서 , 특별히 중요하다고 생각해지는javac,jar,javadoc,war,echo에 임해서 소개합니다. 인수에 대해서는 , 잘 사용되는 것을 발췌해 게재하고 있습니다. 보다 상세를 알고 싶은 경우는Jakarta프로젝트의태스크 일람을 참조해 주세요. 일본어에 의한 정보를 갖고 싶은 경우는 ,Ja-Jakarta에 의한 일본어 번역을 봐 주세요.
●javac태스크
javac(은)는 그 이름대로 ,javac커멘드를 태스크로 한 것으로 ,겉(표)1에 나타내는 인수를 가집니다.
표1 javac태스크의 인수인수 | 기능 | 필수인가? (디폴트치) |
srcdir | java파일의 장소 | YES |
destdir | 클래스 파일을 출력하는 장소 | YES |
classpathref | 미리path로 설정한 패스를 지정 | NO |
encoding | Java파일의 인코딩 | NO(시스템의 인코딩) |
excludes | 컴파일 대상으로부터 제외하고 싶은 파일의 리스트 | NO |
debug | 디버그용으로 컴파일 하는지 어떤지 판단하는 플래그 | NO(false) ※true/false를 지정한다 |
클래스 패스에jar파일을 몇개인가 포함하고 싶은 경우는 ,path태스크와 조합해 이용하면(자) 편리합니다. 예를 들면 ,lib디렉토리아래의jar파일에 모두 클래스 패스를 통해 , 서브 렛 클래스를 위해서(때문에)Tomcat혹은WebLogic의jar파일에 클래스 패스를 통해 컴파일을 실시하려면 , 다음과 같이 기술합니다.
|
path의 설정은 ,javac을 실행하는 타겟내에 포함할 수도 있습니다만 , 초기설정이라고 하는 의미로 , 프롭퍼티를 정의한 뒤에 들어갈 수 있으면(자) 좋을 것입니다.
●jar태스크
jar태스크는 ,jar파일을 작성하는 태스크로 ,겉(표)2의 인수를 가집니다.
표2 jar태스크의 인수인수 | 기능 | 필수인가? |
basedir | jar에 포함하는 파일의 루트 디렉토리 | YES |
destfile | jar파일명 | YES |
manifest | 마니페스트 파일 | NO |
예를 들면 , 마니페스트 파일에manifest를 지정해build/classes이하의 파일을jar에 압축하고 싶은 경우 , 다음과 같이 기술합니다.
|
●war태스크
war태스크는 ,Web어플리케이션의WAR어카이브(archive)를 작성합니다. war파일 자체 , 원래jar형식의 파일인 일도 있어 ,jar파일과 같습니다만 ,war용으로 몇개인가 인수가 추가되고 있습니다. 여기에서는 ,jar에 추가된 인수를겉(표)3에 소개합니다 ( 실은 ,war태스크를 실행하는 클래스 자신이jar태스크의 클래스를 계승하고 있습니다 ).
인수 | 기능 | 필수인가? |
webxml | Web어플리케이션의 배치 기술자META-INF/web.xml파일을 지정 | YES※ |
lib | WEB-INF/lib 디렉토리에 포함하는jar파일. war태스크에 네스트 한 태그로서 포함하는 |
NO |
classes | WEB-INF/classes디렉토리에 포함하는 클래스 파일을 지정. war태스크에 네스트 한 태그로서 포함한다 | NO |
※:update옵션(기존의 파일을 덧쓰기한다 ) 을true로 설정해 있으면 , 설정할 필요는 없습니다
Web어플리케이션의 배치 기술자에게myweb.xml, 서브 렛등의 클래스 파일을classes디렉토리 이하의 파일로 지정해 ,lib디렉토리 이하의jar파일을 포함하는 샘플은 다음과 같이 됩니다.
|
classes(와)과lib는 , 네스트 한 태그에 포함할 필요가 있는 점에 주의해 주세요.
●javadoc태스크
javadoc(을)를 생성하는 태스크로 , 겉(표)4의 인수를 취합니다.
표4 javadoc태스크의 인수인수 | 기능 | 필수인가? (디폴트치) |
packagenames | javadoc(을)를 생성하고 싶은 패키지명 | YES |
lib | WEB-INF/lib 디렉토리에 포함하는jar파일. war태스크에 네스트 한 태그로서 포함하는 |
NO |
classes | WEB-INF/classes디렉토리에 포함하는 클래스 파일을 지정. war태스크에 네스트 한 태그로서 포함하는 | NO |
sourcepath | java파일의 장소 | YES |
destdir | 출력하는 디렉토리 |
YES |
Windowtitle | 브라우저의 바에 표시하는 타이틀을 지정 | NO |
Doctitle | 개요에 표시하는 타이틀을 지정 | NO |
encoding | Java파일의 인코딩 | NO (시스템의 인코딩) |
docencoding | 출력하는Javadoc의 인코딩 | NO (시스템의 인코딩) |
excludes | 컴파일 대상으로부터 제외하고 싶은 파일의 리스트 | NO |
bottom | HTML파일의 맨 밑에 삽입하는 텍스트를 지정 | NO(저작권 정보등을 넣는데 이용) |
Author | 코드중의@author태그로 지정한 개발자명을 포함하는 | NO(false) (true/false를 지정) |
javadoc(은)는 , 다음과 같이 실행합니다.
|
●echo태스크
빌드중에 메세지를 표시할 수가 있습니다. echo(은)는 , 다음과 같이 사용합니다.
|
빌드 파일을 디버그 할 때에 프롭퍼티의 값이나 실행 경과를 표시하거나 빌드 방법의 표시 등에 이용하면(자) 편리합니다.
![]() |
일본어 이용시의 주의점 |
Ant을 일본어 환경에서 이용할 때에 몇개인가 주의해야 할 점이 있으므로 , 조금 말해 둡니다.
●빌드 파일의 인코딩을 지정하는 것
빌드 파일의xml선언부에서 , 빌드 파일의 인코딩을 ,
|
과 같이encoding속성으로 지정할 필요가 있습니다. 이 예에서는 ,Windows-31J(MS932) 를 지정해 있습니다만 ,UNIX등 을 사용의 경우는 ,euc-jp 등에 바꾸어 주세요. 문자 코드가 지정되어 있지 않은 경우 , 빌드 파일 읽기시에 에러가 발생합니다. 덧붙여서 디폴트 인코딩은UTF-8이므로 ,UTF-8그리고 빌드 파일을 기술하면 ,encoding속성을 지정할 필요는 없습니다.
●javac,javadoc태스크의 인코딩을 지정하는 것
원시 코드에 일본어가 포함되는 경우는 ,javac태스크 중(안)에서 다음과 같이 반드시 원시 코드의 인코딩을 지정하도록 해 주세요.
|
이 기술을 실시하지 않아도 , 시스템 디폴트의 인코딩으로 원시 코드를 기술하고 있으면 문제 없게 컴파일 할 수 있습니다만 ,Windows위에서 작성한 코드를Linux위에서 컴파일 하는 등 , 디폴트의 캐릭터 세트가 다른 환경에서Ant를 실행하면(자) , 올바르고 컴파일 할 수 없게 됩니다. encoding(은)는 항상 지정하도록 해 둡시다. javadoc태스크의 경우는 , 다음과 같이 소스의 인코딩 , 출력HTML의 인코딩 , 로케일을 지정하도록(듯이) 합니다 (로케일을 지정하지 않으면 영어 환경에서javadoc를 이용하면(자) ,javadoc가 생성하는HTML이 영어가 될테니 주의해 주세요 ).
|
이 예에서는 , 소스가Windows-31J,javadoc그리고 출력하는HTML파일은iso-2022-jp됩니다. 그리고 , 그 다른 태스크에서도 , 적당 인코딩을 지정하는 버릇을 붙여 두는 것이 좋을 것입니다.
COLUMN 파일 세트와 패턴 Ant 을 이용할 때에 기억해 두면(자) 편리한 기능에 파일 세트와 패턴이 있습니다. 파일 세트는 그 이름대로 「파일의 모임」을 기술한 것입니다. fileset(은)는 ,java의 소스 ,class파일 등 , 어떠한 파일에서도 취급할 수가 있습니다만 , 특히 클래스 패스를 설정할 때jar파일의 집합을 정의하는데 편리합니다. 예를 들면 , 다음과 같이lib디렉토리아래에 컴파일시에 필요한jar파일이 있다고 합니다.
이 때 ,
그 렇다면 ,lib이하의 적색의jar파일(commons-logging.jar,oro.jar,servlet.jar) 에 대해서 , 간단하게 클래스 패스에 통할 수가 있습니다. Ant그럼 , 패턴으로 불리는 정규 표현을 간단하게 한 것을fileset태그 중(안)에서 이용할 수가 있어*는 ,0개 이상의 문자를 나타내는 패턴이므로 ,*.jar에 의해 커런트 디렉토리(여기에서는lib) 중의 확장자(extension)가jar인 파일 모든 것을 지정할 수 있게 됩니다. 그리고 ,
와** 를 이용하면(자) , 커런트 디렉토리 이하의 확장자(extension)가jar인 파일을 재귀적으로 찾아내 , 모든jar을 지정할 수가 있습니다. 상기의 예에서는 ,j2ee.jar을 포함한 적색 , 청색 모든jar파일을 포함할 수가 있습니다. |
다음번은 , 응용편이라고 하는 것으로 ,Ant를 사용해 ,1개의Java코드로부터 간단하게EJB를 작성하는 방법을 소개합니다.
필자 프로필 |
오카모토 타카시(오카모토 타카시) 오카 야마 대학 공학 연구과 수료 후 , (주)NTT데이터에 입사. 캐릭터 레코그네이션 소프트웨어의 연구개발을 거쳐 ,Web서비스 관련의 연구개발에 종사한다. 개인에서는 ,Debian GNU/Linux이 뛰어난 메인트넌스성과 다른 디스트리뷰션을 압도하는 패키지수에 끌리고Debian를 사용하기 시작한 것을 계기로 ,Debian프로젝트의 개발자가 된다. Debian프로젝트의Stefan Gybas,Ola Lundqvist들과 함께 ,Java서포트의 강화를 실시한다. Jakarta에 관해서는 ,Tomcat/JMeter/ORO/Lucene등의 국제화/일본어에의 로컬라이즈 ,Ant의Kaffe VM대응등을 실시하고 있다. 「Jakarta프로젝트 철저 공략」(기술 평론사) , 「WEB+DB PRESS」(기술 평론사) , 「Java World」(IDG재팬) , 「JAVA Developer」(소프트뱅크 퍼블리싱) 등으로 집필 활동을 실시하고 있다. Ja-Jakarta Project에 붙어 Ja-Jakarta프로젝트에서는 ,Jakarta프로젝트의 문서의 일역이나 프로덕트의 국제화/일본어화등을 실시하고 있다. 현재 , 프로젝트의 멤버를 모집중. Ja-Jakarta프로젝트의 활동에 참가하자고 하는 (분)편은 , 「Ja-Jakarta프로젝트에의 참가 방법」 (http://www.ingrid.org/jajakarta/site/getinvolved.html) 을 참조. |
[출처] [펌] Ant으로Java의 빌드를 간단하게 한다|작성자 메멘토