2016-07-27 31 views
10

我試圖從一個或兩個下載的jar文件(當然,提取所有內容後)使用javadoc生成文檔。忽略使用javadoc的小錯誤

但是使用javadoc,即使在Ant文件中,我也因爲愚蠢的東西而被阻止產生這個,特別是「包XXX不存在」和「找不到符號」......我只是想讓javadoc把這些東西的文本(外部引用)在html文檔中,但要記錄它找到的所有.java文件...

NB對於任何感興趣的用戶,這是下載頁面的下載文件(包含源代碼)我試圖生成API文檔:http://logback.qos.ch/download.html

在Mark Rotteveel的幫助下,我的Ant構建文件現在看起來像這樣:

<?xml version="1.0" ?> 
<project name="document logback core" default="doc"> 
    <target name="doc"> 
     <mkdir dir="javadoc" /> 
     <property name="excludedPackages" 
      value="org.codehaus.*,javax.mail.*"/> 
     <javadoc destdir="javadoc" sourcepath="src" packagenames="main.*" 
     excludepackagenames="${excludedPackages}" 
     additionalparam="-Xdoclint:none" /> 
    </target> 
</project> 

...但它仍然給出錯誤1)關於未找到包的問題,​​包括「org.codehaus。[xxx ...]」和「javax.mail。[xxx ...]」和2)關於未找到的符號(儘管如果我可以解決丟失的包錯誤,這可能會消失)。

注意這個構建被認爲是成功的,但是我得到了關於沒有找到源文件(其中確實有評論.java文件)的抱怨,並且\ javadoc下沒有生成任何html。

後,下面託尼·皮爾斯在產生這些文檔

安裝Ant 1.9.6,改變相應的路徑成功,檢查,以確保這是正在使用的版本...再次嘗試。再次失敗。這是我的輸出結束:

[javadoc] D:\Desktop\Downloads\logback-1.1.7.tar\logback-1.1.7\logback-core\src\test\java\ch\qos\logback\core\appender\ConsoleAppenderTest.java:32: error: package org.junit does not exist
[javadoc] import static org.junit.Assert.assertEquals;
[javadoc]_______________________^

[javadoc] javadoc: error - No public or protected classes found to document.
[javadoc] 1 error
[javadoc] 100 warnings

BUILD SUCCESSFUL Total time: 2 seconds

它創建javadoc文件夾...但這是空的。

關於上述「包不存在」的錯誤(還有很多其他的):這一個特別神祕,因爲我認爲Ant默認包括junit(NB我是一個完整的Ant新手,只是通過「螞蟻在行動「)。

但是...與螞蟻javac任務,你可以設置includeAntRuntime="true" ...根據這本書,使螞蟻自己的junit.jar被列入。不幸的是javadoc任務不支持這個屬性。

後來還是

我的想法是有點糊塗這個,說實話:我發現編譯第三方源罐的javadoc最簡單的方法就是通過提取,然後使用命令行,通常是:

javadoc -d docs -Xmaxwarns 10 -Xmaxerrs 10 -Xdoclint:none -sourcepath . -subpackages ch.qos.logback.core

...作爲javadoc爲自己的代碼這似乎並沒有在搖籃(一個問題,我只在螞蟻一瞥,知道未來是搖籃...這並不是特別困難基本知識)。

NB如果您安裝Eclipse的搖籃STS插件,然後創建一個使用搖籃STS嚮導生成文件包含行

apply plugin: 'eclipse'

...其中的後果之一是,通過新項目默認情況下,源代碼以及所有第三方依賴項的可執行文件將在構建期間下載到GRADLE_HOME下。非常好!

回答

6

Java 8引入doclint它會將某些問題視爲錯誤而不會產生文檔。可以通過指定命令行選項-Xdoclint:none來禁用此功能。

參見:Turning off doclint in JDK 8 Javadoc

例如,在螞蟻,你需要做的添加additionalparam="-Xdoclint:none"屬性爲javadoc任務。來自Jaybird的一個(稍作修改)的例子:

<target name="javadocs" depends="init,set-driver-sources"> 
    <mkdir dir="${build.docs}"/> 
    <javadoc destdir="${build.docs}" 
      author="true" 
      version="true" 
      windowtitle="${Name} API" 
      doctitle="${Name}" 
      extdirs="${module.thirdparty}" 

      additionalparam="-Xdoclint:none" 

      excludepackagenames="${excludedPackages}" 
      bottom="Copyright &#169; 2001-2015 Jaybird (Firebird JDBC/JCA) team. All rights reserved."> 
     <arg line="${java.module.arg}"/> 
     <classpath refid="javac.driver.classpath"/> 
     <sourcepath> 
      <pathelement path="${source.java}"/> 
      <pathelement path="${source.jna-client}"/> 
     </sourcepath> 
     <sourcepath refid="source.java.openoffice"/> 
     <sourcepath refid="source.java.additional"/> 
     <link href="http://docs.oracle.com/javase/7/docs/api/"/> 
    </javadoc> 
</target> 
+0

謝謝...其實我碰到過這個。我從命令行(不使用Ant)運行javadoc時試過了。但事實上,我無法使用命令行。啊......剛剛看到你的編輯......再次感謝......去研究它...... –

+0

試着用這個附加參數運行......同樣的結果。你可能會顯示你的構建文件的位置,你定義excludedPackages? –

+0

@mikerodent https://github.com/FirebirdSQL/jaybird/blob/master/build/init.xml#L198請注意,如果問題是外部引用,則可能需要查看'classpath'元素(所以你對類路徑有依賴關係),或者'link'元素(在我的例子中指向JDK API文檔)。 –

0

我簡化了你的構建文件,併成功構建了javadoc。下面是我所做的:

  • 下載的ZIP的logback
  • 擴大來源罐子內部分成src目錄
  • 然螞蟻1.9.6下的Java 8本:

    <?xml version="1.0" ?> 
    <project name="document logback core" default="doc"> 
        <target name="doc"> 
         <mkdir dir="javadoc" /> 
         <javadoc destdir="javadoc" sourcepath="src" 
          additionalparam="-Xdoclint:none" /> 
        </target> 
    </project> 
    

它產生了很多警告,但創建了一個填充html的javadoc目錄。

我刪除了excludepackagenames並刪除了packagenames元素。在任何情況下,packagenames="main.*"都會阻止生成javadoc,因爲jar中的唯一根包是chorg

+0

謝謝。試過了...沒有HTML或任何生成的東西。唯一不同的是我能看到的是我正在使用Ant 1.9.7!在這個週末我會盡力找到時間使用Ant 1.9.6 ......難道這是一個神祕的Windoze權限嗎? –