我在javadoc引用另一个项目的API时遇到了麻烦。
项目之间有一个严格的层次结构(一个"公共"项目被一个"应用"项目引用)。这两个项目的构建都很好,所以不存在实际不存在的类和包的问题。
我的理解是javadoc没有像Java那样的构建路径,而是使用到其他javadoc网站的链接。从生成HTML交叉引用的角度来看,有一些非常合乎逻辑的原因。
我的尝试如下:
- 我已经为公共项目构建了javadoc
- 我把它放到了内网的服务器上
- 我添加了一个链接到api(在我的内部网)到应用程序项目中的javadoc ant任务。
- 我试图构建应用程序项目
Javadoc仍然输出如下形式的错误消息:
[javadoc] C:UserscoulingworkspaceappsrccomblahblahappAppMain.java:14: package com.blahblah.common.foo does not exist
[javadoc] import com.blahblah.common.foo.Bar
[javadoc] ^
生成的javadoc在项目之间没有交叉链接。
两个项目的ant任务如下:
共同:
<javadoc
access="protected"
author="true"
classpath="."
destdir="out/doc/docs"
nodeprecated="false"
nodeprecatedlist="false"
noindex="false"
nonavbar="false"
notree="false"
packagenames="*"
source="1.6"
sourcepath="src"
splitindex="true"
use="true"
version="true">
<link href="http://download.oracle.com/javase/6/docs/api/" />
</javadoc>
应用程序:
<javadoc
access="protected"
author="true"
classpath="."
destdir="out/doc/docs"
nodeprecated="false"
nodeprecatedlist="false"
noindex="false"
nonavbar="false"
notree="false"
packagenames="com.blahblah.app.*"
source="1.6"
sourcepath="src"
splitindex="true"
use="true"
version="true">
<link href="http://intranet.blahblah.com/api/common/docs/" />
<link href="http://download.oracle.com/javase/6/docs/api/" />
</javadoc>
有什么想法,我需要做什么,让应用程序引用共同?
<link>
元素(或命令行javadoc的-link
选项)只有助于生成链接-但是javadoc在较早的时候停止,如果它们引用未知(常见)类,它就不能真正与您的应用程序类一起工作。
在这方面,Javadoc的工作方式就像Javac一样——你必须以某种方式将它指向要使用的类,也就是说,它们必须在类路径中。您可以使用<classpath>
元素指向jar文件或类目录,或者使用<sourcepath>
元素指向源代码(如果您需要从它们继承一些注释,请执行此操作)。
链接到标准API时不需要这个,因为它已经包含在编译器中了。
注意,这种方式的链接需要Javadoc从这个URL下载package-list
——你可以指向包含这个包列表文件的本地目录。