Doclet
ref. 1을 보면 Docket 을 이용해서 무엇을 할 수 있는지 알 수 있다.Doclet은 소스레벨의 구조를 관찰(inspect)하기 위해 제공하는 library이다. 이녀석을 이용하면 다음의 것들을 할 수 있다.
- 소스의 문서화
- 프로그램 점검(checking)
- 자동 코드 생성
왜 Doclet 을 제공하는가?
좀 일반적(?)으로 이야기하면 원래 이런 것을 제공하지 않아도 file 을 읽어드려서 string 을 parsing해서 구조를 파악할 수도 있다. 하지만 이런 것을 위해서는 다시 java language에 대한 parser 를 만들어야 한다. 이런 번거로움을 덜어주기 위한 것이라 보면 될 듯 하다.Doclet 사용법
Doclet 을 사용하는 방법은 ref. 2에 나와 있다. 대략적으로 설명을 하면, library 를 만드는 과정과 비슷하다.Doclet class 작성
일단 Doclet 은 javadoc 에서 사용할 수 있도록 interface 를 맞춰야 하는데, 그것이 static type 의 start() 라는 method 이다. 아래는 ref. 2의 소스를 가져왔다.public class ListClass {
public static boolean start(RootDoc root) {
ClassDoc[] classes = root.classes();
for (int i = 0; i < classes.length; ++i) {
System.out.println(classes[i]);
}
return true;
}
}
위의 코드는 보면 알겠지만 간단하다. class 들의 이름을 그냥 찍어주는 Doclet 이다.
이 Doclet 을 사용하기 위해서는 당연히 compile 을 해야 한다. compile 을 할 때 Doclet API 를 사용하기 위해서 classpath 에 tools.jar 을 추가해야 한다.
f:\> javac -classpath C:\jdk1.3\lib\tools.jar ListClass.java
이제 ListClass.class 파일이 만들어 졌다. 이 녀석을 이제 javadoc 와 함께 이용하면 된다.
javadoc 에서 doclet 사용하기
기본적으로 javadoc 은 standard doclet 을 사용한다. 기본적으로 javadoc 에 doclet 을 따로 정의해 주지 않으면 standard doclet 이 사용되는 것이라 보면 된다.여기서는 우리가 위에서 만든 ListClass 라는 Doclet 을 이용해 보도록 하자. 일단 dd 라는 폴더에 ListClass.class 가 있는 상황이라면 아래처럼 javadoc 를 실행하면 된다.
f:\ --+-- Test.java | +--- dd ----- ListClass.class
f:\> "c:\Program Files\Java\jdk1.7.0_25\bin\javadoc.exe" -doclet ListClass -docletpath .\dd Test.java
그러면 아래 처럼 결과가 나온다.
f:\>"c:\Program Files\Java\jdk1.7.0_25\bin\javadoc.exe" -doclet ListClass -docletpath .\dd Test.java Loading source file Test.java... Constructing Javadoc information... Test
Doclet 예제 gradle project
이런 식으로 작업하는 것은 간단해 보이긴 한데, 좀 더 복잡한 Doclet 을 만들려 할 때 debugging 이 쉽지 않다. 역시 debugger 를 위해서 IDE 에서 작업할 수 있는 것이 좋다.그래서 github에 작업을 해놨다. gradle 로 되어 있다.
주의할 점은 반드시 build 후에 application 을 실행해야 한다는 것이다. build task 로 ListClass 를 build 해야 하고, 실행을 통해 javadoc 를 실행하기 때문이다. 자세한 것은 소스를 참고하도록 하자.
댓글 없음:
댓글 쓰기