5.Javac Task -신중섭

이종철 0 3,211 2006.05.23 22:58
5.Javac Task
 
 
javac타스크는 정말로 많은 속성들이 있다. 그많은 것들을 다 알아보긴 힘드므로 자주 사용할 속성들만 설명하겠다. 더 자세한 속성이 알고 싶다면 ant 사이트를 방문하여 확인 해 보자.



2. javac task

: 자바 소스 트리의 소스들을 컴파일한다. java 소스 파일과 class파일 이름만으로 컴파일을 결정한다. 즉, class파일 이름과 java 소스 파일의 이름과 동일한 것이 없거나 현재 소스가 이전 소스 보다 더 최신의 것들만 컴파일한다. 또한 include, exclude를 통해서 컴파일할 소스를 결정하거나 배제할 수도 있다.



속성

* 1) src : java 소스의 위치

2) destdir : 컴파일된 class의 위치

3) includes : ","나 "space"로 구분한 java 파일을 포함하거나 와일드 카드를 통해 컴파일 될 파일을 결정한다.

4) excludes : 인클루드와 같은 식으로 표현되며, 선택된 파일들을 컴파일에서 배제한다.

5) extdirs : 컴파일시 사용할 확장 디렉토리

6) debug : 소스가 디버그 정보로 컴파일 될 것인지의 여부

7) listfiles : 컴파일되는 소스 리스트 출력 여부

8) fork : 컴파일을 외부 프로세스로 실행할 것인지의 여부



이 속성들 중 하위 엘레멘트로 더욱 세분화하여 표현할 수 있는 것들도 있다. 예제를 통해서 보면 쉽게 알 수가 있다.



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



helloantPlus.xml 소스에 보면 위의 소스를 볼 수 있다. 이것은 가장 간단한 형식이라고 보면 된다. 소스 위치의 모든 소스를 destdir의 위치로 컴파일한다는 것이다.



<javac srcdir="${src}" destdir="${build}" includes="*.java"/>

모든 자바 파일을 컴파일하겠다는 뜻이다. 통상 와일드 카드를 쓰는 유형은 모든 파일이나 디렉토리를 지정할 경우 **로 *는 파일명의 문자열이나 모든 파일명의 문장열을 지칭할때 예를 들면 *est.java처럼 일부 문자를 대표할때 쓴다.



<javac srcdir="${src}" destdir="${build}" excludes="net/loggable/ant/**"/>

현재 소스 폴더에서 net/loggable/ant/의 모든 파일을 제외한다는 뜻이다.



<javac srcdir="${src}" destdir="${build}" excludes="net/loggable/ant/**"

          classpath="${lib}/foo.jar" debug="on" fork="true"/>



클래스 패스에 foo.jar를 등록하고 debug모드를 on시킨다. off로 속성을 지정하면 디버그 모드를 끄는것이다. fork속성은 컴파일 할경우 외부적으로 소스를 컴파일 할 것이냐의 질문이다. 외부적이든 아니든 결과에는 큰 차이가 없다고 본다.



자 그렇다면 include와 exclude를 내부 엘레멘트로 쓰는 법을 알아보면,



<javac srcdir="${src}" destdir="${build}" includes="*.java" excludes="net/loggable/ant/**" classpath="foo.jar"/>



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

    <includes name="*.java"/>

    <excludes="net/loggable/ant/** , net/loggable/ants/**"/>

    <classpath path="${basedir}/foo.jar"/>

</javac>

때로는 ,를 써서 여러개의 파일들을 정할 수 있다. 클래스패스도 위와 같이 내부 엘레멘트로 가능하다.



개인적으로 왠만하면 저정도의 컴파일 속성만 알아도 프로젝트 빌드시에 큰 문제는 없을 것이다. 또한 includes와 excludes는 앞으로 path lik structure라는 경로 표현 방식에서 다시 언급할 것이니 감으로 이렇게 사용하는 구나라고 생각하자.
 
 

Comments