2012-06-14 45 views
3

我通過gradle這個運行與我的doclet的Javadoc,當我運行我的javadoc/doclet的任務,我收到了一個錯誤:的Javadoc不承認doctitle選項/標誌

error - invalid flag: -doctitle 

在這之後,下一個使用表

usage: javadoc [options] [packagenames] [sourcefiles] [@files] 
-overview <file>   Read overview documentation from HTML file 
-public     Show only public classes and members 
-protected    Show protected/public classes and members (default) 
-package     Show package/protected/public classes and members 
-private     Show all classes and members 
-help      Display command line options and exit 
-doclet <class>   Generate output via alternate doclet 
-docletpath <path>  Specify where to find doclet class files 
-sourcepath <pathlist> Specify where to find source files 
-classpath <pathlist>  Specify where to find user class files 
-exclude <pkglist>  Specify a list of packages to exclude 
-subpackages <subpkglist> Specify subpackages to recursively load 
-breakiterator   Compute 1st sentence with BreakIterator 
-bootclasspath <pathlist> Override location of class files loaded 
          by the bootstrap class loader 
-source <release>   Provide source compatibility with specified release 
-extdirs <dirlist>  Override location of installed extensions 
-verbose     Output messages about what Javadoc is doing 
-locale <name>   Locale to be used, e.g. en_US or en_US_WIN 
-encoding <name>   Source file encoding name 
-quiet     Do not display status messages 
-J<flag>     Pass <flag> directly to the runtime system 

有沒有人有一個想法,爲什麼Javadoc不接受該標誌?理論上,我使用jdk1.6的tools.jar運行javadoc。我認爲這是javadoc總是會接受doctitle選項的東西。感謝您的時間!

編輯:該doctitle選項是標準Doclet的一部分,所以它看起來像我無法訪問標準Doclet選項。

回答

5

編輯:

知道了! 問題出在Doclet本身。我沒有擴展標準Doclet(「public class MyDoclet extends Standard {」),所以標準Doclet中的標誌不可用(並且doctitle是標準Doclet標誌的一部分)。

感謝保羅讓我「重新思考」我的回答:-)

+1

我不認爲導入更多的類將有所幫助。在編譯的doclet類中,只會提到實際使用的類型,不會導入其他類型。您的doclet必須接受(並解釋)給出的選項,並且doctitle選項對於每個doclet都可能沒有意義,因此它不是默認選項。 –

+0

對不起,你是對的。編譯前我沒有清理過,所以我在這裏混雜了很多東西。不同之處在於「擴展標準」,其中包含了doctitle選項。然後我會編輯答案。非常感謝您的評論! – raspayu

2

可以設置任務局部變量「標題」清空的Javadoc任務

task javadocTask(type: Javadoc) { 
    title = "" 
    //Other items like source and options 
} 

或可替代

javadocTask.title = "" 

爲什麼

奇格勒le在javadoc任務中設置局部變量'title',然後用於填充-doctitle和-windowtitle參數。如果它是空的,他們將不填充字段,並且你可以避免這個問題。

有趣的是,標題似乎由java插件填充,所以如果你從一個沒有java的項目(比如說一個聚合器項目)運行javadoc,你不會遇到這個問題,但如果你移動javadoc生成一個java項目,你會。

注意:title = ""title = null都適用於最新版本的gradle。這可能是因爲Gradle知道""null都是空的。但是,在較早版本的Gradle中,有報告稱使用null無法正常工作,但有空字符串。

+0

title = null似乎不起作用,但title =「」的確如此。 –

+0

@ IanG.Clifton有意思的是,'title =「''和'title = null'都適用於我,但並沒有失敗。你在哪個版本的Gradle上?也許代碼更改爲執行不同版本的字符串。的isEmpty()或東西;) –

+0

奇怪的是,新項目將指向回到搖籃1.6,而不是更新的版本;當我遇到其他問題時,我並不認爲要檢查,謝謝! –