需求
近期要對一個項目結構例如以下的Maven項目生成JavaDoc文檔。
Project
|-- pom.xml
|-- Module1
| `-- pom.xml
|-- Module2
| `-- pom.xml
|-- Module3
|-- pom.xml
這個就須要用到本文將要提出的一個Maven插件:javadoc。
基本使用
插件的基本配置非常easy:
<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-javadoc-plugin</artifactId> <version>2.9.1</version> </plugin>
假設對於一個普通的Maven項目,那么這個配置就能夠讓你輸出一個JavaDoc文檔了(使用javadoc:javadoc命令)。
多模塊Maven項目
而我們如今是一個多模塊的Maven項目,那么就須要一些額外的配置來完畢此操作:
<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-javadoc-plugin</artifactId> <version>2.9.1</version> <configuration> <aggregate>true</aggregate> </configuration> </plugin>
就是一個aggregate設置為true,就能夠讓你在父項目執行javadoc:javadoc的時候,就會將子模塊的JavaDoc生成在父項目的target下,而且會將其整合成一個JavaDoc。
自己定義標簽
如今問題來了:
我們的類中的方法凝視例如以下
/** * @author : 張三 * @group : group * @Date : 2014-01-26 21:14:49 * @Comments : 頁面所含操作增刪改查的ejb接口 * @Version : 1.0.0 */ public interface IOperationBean { /** * @MethodName : getOperationByID * @Description : 依據Id獲得頁面所含操作 * @param ID 頁面所含操作ID */ PageOperation getOperationByID(String ID); }
而我們在生成JavaDoc后,並沒有看到Description和MethodName這兩個注解中相應的內容。也就導致了方法的說明不翼而飛了。
經過實驗,要想像jdk那樣讓方法的描寫敘述緊跟在方法名后面,是須要這樣加入凝視的:
/** * 依據Id獲得頁面所含操作 * @param ID 頁面所含操作ID */ PageOperation getOperationByID(String ID);
已經到了項目后期。如今再讓大家去改這些有些說只是去,查了下官網,發現有自己定義標簽。正好解決的就是這種問題。
而這次問題的出現。還是源於我們對於JavaDoc生成不熟悉。
廢話不多說,直接看樣例:
<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-javadoc-plugin</artifactId> <version>2.9.1</version> <configuration> <aggregate>true</aggregate> <tags> <tag> <name>Description</name> <placement>a</placement> <head>用途</head> </tag> </tags> </configuration> </plugin>
說明:
1.name為你Java代碼中的注解的名字
2. placement這個在官網上有8種,我也自己試了下。事實上這個就是說你要把哪些(方法、字段、類)上面的注解放到JavaDoc中
3.head。假設不寫這個,用的就是name,假設寫了,那么顯示效果例如以下:
這樣。你就既能夠定義自己的凝視規范。又能夠生成對應的JavaDoc文檔了
自己定義路徑
<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-javadoc-plugin</artifactId> <version>2.9.1</version> <configuration> <reportOutputDirectory>../myoutput</reportOutputDirectory> <destDir>myapidocs</destDir> </configuration> </plugin>
說明: