Javadoc/Javadoc2

已棄用javadoc2 任務僅指向 javadoc 任務,且其存在是為了向後相容性考量。由於此任務將在未來版本中移除,強烈建議改用 javadoc

說明

使用 javadoc 工具產生程式碼文件。

來源目錄將會遞迴掃描 Java 來源檔案以進行處理,但僅會將符合包含規則且不符合排除規則的檔案傳遞給 javadoc 工具。這允許使用萬用字元在封裝名稱之間進行選擇,以減少冗長度並降低管理成本。然而,此任務與 javac 任務不同,沒有「已變更」檔案的概念。這表示每次執行此任務時,所有封裝都會被處理。不過,通常會較不頻繁地使用此任務。

注意:由於 javadoc 會呼叫 System.exit(),因此無法在與 Apache Ant 相同的 JVM 中執行 javadoc,否則會損壞功能。因此,此任務總是會分岔 JVM。此開銷並不顯著,因為 javadoc 通常是一個大型應用程式,且呼叫頻率很低。

注意packagelist 屬性允許您在 Ant 檔案外指定要記錄的封裝清單。建議將所有內容都包含在 build.xml 檔案中。新增此選項是為了讓從一般 makefile(您會在此使用 javadoc 的此選項)移轉變得更容易。packagelist 中所列的封裝並未經過檢查,因此即使某些封裝遺失或損毀,任務仍會執行。如果您想從現有的 makefile 轉換,請使用此選項。一旦執行順利,您應該改用一般表示法。

注意:在為包含註解的類別產生 JavaDoc 時,您可能會收到 java.lang.ClassCastException: com.sun.tools.javadoc.ClassDocImpl。這是因為 錯誤 6442982。原因是 javadoc 找不到已使用註解的實作。解決方法是使用 classpathclasspathref 屬性或巢狀 <classpath> 元素,將包含這些實作的 jar(例如 JAXBs @XmlType,...)提供給 <javadoc>

注意:執行 javadoc 時會發生許多問題,源自於命令列過長,即使錯誤訊息沒有提供任何提示,這也可能是問題。如果您在執行任務時遇到問題,請先嘗試將 useexternalfile 屬性設定為 true

如果您使用多種方式來指定 javadoc 應該在哪裡尋找原始碼,您的結果將會是所有指定文件檔的聯集。例如,如果您指定一個 sourcepath 屬性,還有一個嵌套的 packageset,兩個都指向同一個目錄,您的 excludepackagenames 屬性將不會有任何作用,除非它與 packagesetexclude 模式一致(反之亦然)。

參數

屬性 說明 必要
sourcepath 指定在哪裡尋找原始碼檔案 四個或嵌套的 <sourcepath><fileset>module<packageset> 中至少一個
sourcepathref 透過 參考 在其他地方定義的 sourcepath,來指定在哪裡尋找原始碼檔案。
sourcefiles 原始碼檔案的逗號分隔清單,另請參閱嵌套的 source 元素。
modulenames 模組名稱的逗號分隔清單,另請參閱嵌套的 module 元素。自 Ant 1.10.6 起
destdir 輸出檔案的目的地目錄 是,除非已指定 doclet
maxmemory 分配給 javadoc JVM 的最大記憶體量
packagenames 套件檔案的逗號分隔清單(以終止萬用字元結尾),另請參閱嵌套的 package 元素。
packageList 包含要處理的套件檔案名稱
classpath 指定在哪裡尋找使用者類別檔案
Bootclasspath 覆寫由引導程式類別載入器載入的類別檔案位置
classpathref 透過 參考 在其他地方定義的 classpath,來指定在哪裡尋找使用者類別檔案。
bootclasspathref 透過 參考 在其他地方定義的 bootclasspath,來覆寫由引導程式類別載入器載入的類別檔案位置。
Extdirs 覆寫已安裝擴充功能的位置
概觀 從 HTML 檔案讀取概觀文件
access 存取模式:publicprotectedpackageprivate 之一 否;預設為 protected
公共 僅顯示公共類別和成員
受保護 顯示受保護/公共類別和成員(預設)
套件 顯示套件/受保護/公共類別和成員
私人 顯示所有類別和成員
使用模擬 doclet 的 JDK 1.1 產生輸出。
注意:除非您使用 jdk 1.4 之前的外部 javadoc,否則此屬性不會產生任何作用
詳細 輸出 javadoc 正在執行中的訊息
區域設定 要使用的區域設定,例如 en_USen_US_WIN
編碼 原始檔編碼名稱
版本 包含 @version 段落
使用 建立類別和套件使用頁面
作者 包含 @author 段落
分割索引 將索引分割成每個字母一個檔案
視窗標題 文件瀏覽器視窗標題(文字)
文件標題 包含套件索引(第一)頁面的標題(HTML 程式碼)
標頭 包含每個頁面的標頭文字(HTML 程式碼)
頁尾 包含每個頁面的頁尾文字(HTML 程式碼)
底部 包含每個頁面的底部文字(HTML 程式碼)
連結 建立連結至指定 URL 的 javadoc 輸出,另請參閱巢狀 link 元素。
離線連結 透過指定 url alt-url(空格作為分隔符號)的值,連結至 url 的文件,並使用 alt-url 的套件清單。巢狀 link 元素的簡寫,其中 offline=true
群組 在概觀頁面中將指定的套件分組。格式如下所述 下方,另請參閱巢狀 group 元素。
不顯示已棄用 不包含 @deprecated 資訊
不顯示已棄用清單 不產生已棄用清單
不顯示樹狀結構 不產生類別階層
不顯示索引 不產生索引
不顯示說明 不產生說明連結
不顯示導覽列 不產生導覽列
序列化警告 產生有關 @serial 標籤的警告
說明檔案 指定要使用的 HTML 說明檔案
樣式表檔案 指定要使用的 CSS 樣式表
字元集 用於跨平台檢視產生的文件
文件編碼 輸出檔案編碼名稱
文件說明 指定用於產生文件說明的 doclet 開始的類別檔案—另請參閱嵌套的 doclet 元素。
文件說明路徑 指定使用 -doclet 選項指定的 doclet 類別檔案路徑。
文件說明路徑參考 指定使用 -doclet 選項指定的 doclet 類別檔案路徑,方法是 參考 其他地方定義的路徑。
其他參數 讓您將其他參數新增至 javadoc 命令列。對 doclet 很實用。包含空白的參數需要使用 &quot; 進行引號—另請參閱嵌套的 arg 元素。
發生錯誤時失敗 如果命令以 0 以外的回傳碼結束,則停止建置程序。
發生警告時失敗 如果發出警告,則停止建置程序—亦即,如果 javadoc 的輸出包含字詞 warning自 Ant 1.9.4 起
排除套件名稱 您不想要的文件說明的套件逗號分隔清單—另請參閱嵌套的 excludepackage 元素。
預設排除 指示是否應使用預設排除 (yes|no)。 否;預設為 yes
使用外部檔案 指示是否應將在 srcfiles 或作為嵌套的 source 元素指定的原始檔名稱寫入暫時檔案,以縮短命令列。也適用於透過 packagenames 屬性或嵌套的 package 元素指定的套件名稱。自 Ant 1.7.0 起,也適用於所有其他命令列選項。(yes|no)。
如果啟用,檔案將寫入 暫時目錄
否;預設為 no
來源 啟用 javadoc 以處理 Java 語言功能。將此設定為 1.4 以記錄使用 javac -source 1.4 編譯的程式碼等。 否;預設值可以使用神奇 ant.build.javac.source 屬性提供。
連結來源 產生至原始檔的超連結。自 Ant 1.6 起。(yes|no)。 否;預設為 no
中斷迭代器 使用新的斷行迭代演算法。自 Ant 1.6 起。(是|否)。 否;預設為 no
noqualifier 啟用 -noqualifier 參數—必須為 all 或由冒號分隔的套件清單。自 Ant 1.6 起
includenosourcepackages 如果設定為 true,不包含 Java 原始碼但包含 package.html 的套件也會記錄。自 Ant 1.6.3 起 否;預設為 false
executable 指定要使用的特定 javadoc 可執行檔,取代預設二進位檔(與 Ant 執行時所在的 JDK 相同)。自 Ant 1.6.3 起注意:您必須確保此命令支援您想要使用的屬性。
docfilessubdirs 啟用 doc-files 子目錄的深度複製。自 Ant 1.8.0 起 否;預設為 false
excludedocfilessubdir 如果 docfilessubdirs 為 true,則為要排除的 doc-files 子目錄的冒號分隔清單。自 Ant 1.8.0 起
postProcessGeneratedJavadocs 是否要後處理產生的 javadocs 以減輕 CVE-2013-1571。自 Ant 1.9.2 起
在 Java 7 更新 25 之前的 Oracle JDK 產生的 javadocs 中,可能會發生框架注入攻擊(詳細資料)。當此旗標設定為 true 時,Ant 會檢查文件是否容易受到攻擊,並嘗試修復它們。
否;預設為 true
modulesourcepath 指定尋找模組原始碼檔案的位置自 Ant 1.10.6 起
modulesourcepathref 透過 參照 其他地方定義的 PATH,指定尋找模組原始碼檔案的位置。自 Ant 1.10.6 起
modulepath 指定尋找模組檔案的位置自 Ant 1.10.6 起
modulepathref 透過 參照 其他地方定義的 PATH,指定尋找模組檔案的位置。自 Ant 1.10.6 起

group 屬性的格式

參數以逗號分隔。每個單一參數是 2 個以空白分隔的字串,其中第一個是群組標題,第二個是套件的冒號分隔清單。

如果您需要指定多個群組,或群組標題包含逗號或空白字元,強烈建議使用 巢狀 group 元素

例如。

group="XSLT_Packages org.apache.xalan.xslt*,XPath_Packages org.apache.xalan.xpath*"

以巢狀元素指定參數

packageset

一個 DirSet。所有包含 Java 原始檔的相符目錄將作為套件名稱傳遞給 javadoc。套件名稱由目錄名稱建立,方法是將目錄分隔符轉換為點。Ant 假設 packageset 的基本目錄指向套件階層的根目錄。

工作項的 packagenamesexcludepackagenamesdefaultexcludes 屬性對巢狀的 <packageset> 元素沒有影響。

fileset

一個 FileSet。所有相符的檔案將作為原始檔傳遞給 javadoc。Ant 會自動將包含模式 **/*.java(如果 includenosourcepackagestrue,則為 **/package.html)新增到這些檔案集。

巢狀檔案集可用於記錄預設套件中的來源,或者如果您想從文件記錄中排除某些檔案。如果您想記錄所有原始檔,且不使用預設套件,則應改用 packageset,因為這會提升 javadoc 的效能。

工作項的 packagenamesexcludepackagenamesdefaultexcludes 屬性對巢狀的 <fileset> 元素沒有影響。

sourcefiles

一個用於任意基於檔案系統的 資源集合 的容器。任何巢狀集合(包括巢狀檔案集、檔案清單或路徑)中包含的所有檔案都將作為原始檔傳遞給 javadoc。

package

packagenames 給出的清單中的其中一項相同。

參數
屬性 說明 必要
name 套件名稱(可能是萬用字元)

excludepackage

excludepackagenames 給出的清單中的其中一項相同。

參數
package 相同。

module

自 Ant 1.10.6 起

modulenames 給出的清單中的其中一項相同。

參數
屬性 說明 必要
name 模組名稱

來源

sourcefiles 給出的清單中的其中一項相同。

參數
屬性 說明 必要
file 要記錄的原始檔

doctitle

doctitle 屬性相同,但您可以使用這種方式將文字巢狀在元素內。

如果巢狀文字包含換行符,您必須使用 useexternalfile 屬性,並將其設定為 true

header

類似於 <doctitle>

footer

類似於 <doctitle>

底部

類似於 <doctitle>

連結

在指定的 URL 建立連結到 javadoc 輸出。這會執行與 linklinkoffline 屬性相同的作用。您可以使用任一語法(或同時使用),但使用巢狀元素,您可以輕鬆指定參數的多個執行個體。

參數
屬性 說明 必要
href 您想要連結到的外部文件網址。這可以是絕對網址,或相對檔案名稱。
offline 如果在產生文件時,此連結無法在線上取得,則為true
packagelistLoc 外部文件 package-list 檔案所在目錄的位置 如果 offline 屬性為 true,則為兩個屬性之一
packagelistURL 外部文件 package-list 檔案所在目錄的網址
resolveLink 如果 link 屬性是相對檔案名稱,Ant 會先嘗試根據目前專案的 basedir 找出檔案,如果在那裡找到檔案,則會使用 link 屬性的絕對網址,否則會將檔案名稱原封不動地傳遞給 javadoc 指令。 否;預設為 false

群組

將概觀頁面上的套件分隔成您指定的群組,每個表格一個群組。這與 group 屬性扮演相同角色。您可以使用任一種語法(或同時使用兩種語法),但透過巢狀元素,您可以輕鬆指定參數的多個執行個體。

參數
屬性 說明 必要
title 群組標題 是,除非給定巢狀 <title>
packages 要包含在該群組中的套件清單。多個套件以 : 分隔。 是,除非給定巢狀 <package>

標題可以指定為包含文字內容的巢狀 <title> 元素,而套件可以列在巢狀 <package> 元素中,就像主工作一樣。

文件說明

doclet 巢狀元素用於指定 javadoc 將用來處理輸入原始檔的 doclet。許多標準 javadoc 參數實際上是標準 doclet 的參數。如果這些參數指定在 javadoc 工作的屬性中,它們將傳遞給 <doclet> 巢狀元素中指定的 doclet。因此,只有當這些屬性可以由正在使用的 doclet 解釋時,才應該指定這些屬性。

如果 doclet 需要其他參數,則可以使用 <doclet> 元素中的 <param> 元素指定這些參數。這些參數僅限於簡單字串。以下是 doclet 元素的範例用法

<javadoc ... >
   <doclet name="theDoclet"
           path="path/to/theDoclet">
      <param name="-foo" value="foovalue"/>
      <param name="-bar" value="barvalue"/>
   </doclet>
</javadoc>

tag

如果您想使用巢狀 tag 元素指定標準標籤,因為您想要決定標籤的輸出順序,則不能設定這些標籤的 description 屬性。

參數
屬性 說明 必要
name 標籤名稱(例如 todo 是,除非指定了 dir 屬性
說明 標籤說明(例如 待辦事項: 否,如果未指定此項,javadoc 可執行檔會選取預設值
已啟用 標籤是否已啟用 否;預設為 true
範圍 標籤範圍,也就是可使用此標籤的元素。這是下列部分元素的逗號分隔清單:概觀套件類型建構函式方法欄位 或預設值 全部 否;預設為 全部
目錄 如果指定了此屬性,這個元素會表現為隱含的 檔案集。此檔案集包含的檔案應在個別行中包含每個標籤定義,如 Javadoc 參考指南 中所述
ejb.bean:t:XDoclet EJB Tag
todo:a:To Do
注意:Javadoc 參考指南在定義說明部分周圍加上雙引號。當在檔案中使用時,此方法無法運作,因為在傳送給 javadoc 程式時,定義會再次加上引號。
注意:如果指定了此屬性,此元素中的所有其他屬性都會被忽略。

標籤

標籤巢狀元素用於指定自訂 標籤,超出 預設標籤

參數
屬性 說明 必要
name 標籤類別名稱(例如 com.sun.tools.doclets.ToDoTaglet
路徑 指定標籤類別搜尋路徑的路徑(例如 /home/taglets)。路徑也可以透過巢狀 <path> 元素指定

來源路徑、類別路徑、開機類別路徑、模組路徑、模組來源路徑

Javadoc來源路徑類別路徑開機類別路徑模組路徑模組來源路徑 屬性是 類似 PATH 的結構,也可以分別透過巢狀 來源路徑類別路徑開機類別路徑模組路徑模組來源路徑 元素設定。

引數

自 Ant 1.6 起

使用巢狀 <arg> 指定其他引數。請參閱 命令列引數

範例

<javadoc packagenames="com.dummy.test.*"
         sourcepath="src"
         excludepackagenames="com.dummy.test.doc-files.*"
         defaultexcludes="yes"
         destdir="docs/api"
         author="true"
         version="true"
         use="true"
         windowtitle="Test API">
  <doctitle><![CDATA[<h1>Test</h1>]]></doctitle>
  <bottom><![CDATA[<i>Copyright &#169; 2000 Dummy Corp. All Rights Reserved.</i>]]></bottom>
  <tag name="todo" scope="all" description="To do:"/>
  <group title="Group 1 Packages" packages="com.dummy.test.a*"/>
  <group title="Group 2 Packages" packages="com.dummy.test.b*:com.dummy.test.c*"/>
  <link offline="true" href="https://docs.oracle.com/javase/8/docs/api/" packagelistLoc="C:\tmp"/>
  <link href="https://docs.oracle.com/javase/8/docs/api/"/>
</javadoc>

等同於

<javadoc destdir="docs/api"
         author="true"
         version="true"
         use="true"
         windowtitle="Test API">

  <packageset dir="src" defaultexcludes="yes">
    <include name="com/dummy/test/**"/>
    <exclude name="com/dummy/test/doc-files/**"/>
  </packageset>

  <doctitle><![CDATA[<h1>Test</h1>]]></doctitle>
  <bottom><![CDATA[<i>Copyright &#169; 2000 Dummy Corp. All Rights Reserved.</i>]]></bottom>
  <tag name="todo" scope="all" description="To do:"/>
  <group title="Group 1 Packages" packages="com.dummy.test.a*"/>
  <group title="Group 2 Packages" packages="com.dummy.test.b*:com.dummy.test.c*"/>
  <link offline="true" href="https://docs.oracle.com/javase/8/docs/api/" packagelistLoc="C:\tmp"/>
  <link href="https://docs.oracle.com/javase/8/docs/api/"/>
</javadoc>

<javadoc destdir="docs/api"
         author="true"
         version="true"
         use="true"
         windowtitle="Test API">

  <fileset dir="src" defaultexcludes="yes">
    <include name="com/dummy/test/**"/>
    <exclude name="com/dummy/test/doc-files/**"/>
  </fileset>

  <doctitle><![CDATA[<h1>Test</h1>]]></doctitle>
  <bottom><![CDATA[<i>Copyright &#169; 2000 Dummy Corp. All Rights Reserved.</i>]]></bottom>
  <tag name="todo" scope="all" description="To do:"/>
  <group title="Group 1 Packages" packages="com.dummy.test.a*"/>
  <group title="Group 2 Packages" packages="com.dummy.test.b*:com.dummy.test.c*"/>
  <link offline="true" href="https://docs.oracle.com/javase/8/docs/api/" packagelistLoc="C:\tmp"/>
  <link href="https://docs.oracle.com/javase/8/docs/api/"/>
</javadoc>