需求
近期要對一個項目結構例如以下的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>
說明:
