需求
最近要對一個項目結構以下的Maven項目生成JavaDoc文檔。apache
Project
|-- pom.xml
|-- Module1
| `-- pom.xml
|-- Module2
| `-- pom.xml
|-- Module3
|-- pom.xmlapi
這個就須要用到本文將要提出的一個Maven插件:javadoc。maven
基本使用
插件的基本配置很簡單:spa
- <plugin>
- <groupId>org.apache.maven.plugins</groupId>
- <artifactId>maven-javadoc-plugin</artifactId>
- <version>2.9.1</version>
- </plugin>
若是對於一個普通的Maven項目,那麼這個配置就可讓你輸出一個JavaDoc文檔了(使用javadoc:javadoc命令)。
多模塊Maven項目
而咱們如今是一個多模塊的Maven項目,那麼就須要一些額外的配置來完成此操做:.net
- <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。
自定義標籤
如今問題來了:插件
咱們的類中的方法註釋以下code
- /**
- * @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那樣讓方法的描述緊跟在方法名後面,是須要這樣添加註釋的:xml
- /**
- * 根據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文檔了
自定義路徑
這個功能通常不會用到,只是順便看了一下,就寫下來吧。
在這裏須要叨唸兩句關於約定優於配置,在最初我用Maven的時候,就看到過這樣的話,Maven目錄能夠不這樣設置麼?能夠,你能夠本身改。
只能說咱們在大部分時候,是不須要改這個,但不意味着咱們在作的時候就能夠把這個作死,這樣於用戶,於從此的維護來講,都不是一個好的選擇。
兩句叨唸完了,如今來看怎麼設置吧:
- <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>
說明:
1.reportOutputDirectory是說的路徑
2.destDir是說的目標文件夾
到這裏Maven多模塊下使用javadoc插件生成JavaDoc文檔過程當中遇到的問題就都解決了。