在不同项目之间交叉链接Java文档

3

我在使用javadoc引用另一个项目的API时遇到了问题。

这两个项目之间有严格的层次结构(一个“common”项目被一个“app”项目引用)。这两个项目都可以正常构建,因此不存在类和包实际上不存在的问题。

我的理解是,与Java不同,javadoc没有类似的构建路径,而是使用链接到其他javadoc网站。从能够生成HTML交叉引用的角度来看,这种做法有一些非常合理的原因。

我的尝试如下:

  1. 我已经为common项目构建了javadoc
  2. 我将其放在内部网络上的Web服务器上
  3. 我在app项目的javadoc ant任务中添加了一个指向该api(在我的内部网络上)的链接。
  4. 我尝试构建app项目

Javadoc仍然会输出以下形式的错误消息:

[javadoc] C:\Users\couling\workspace\app\src\com\blahblah\app\AppMain.java:14: package com.blahblah.common.foo does not exist
[javadoc] import com.blahblah.common.foo.Bar
[javadoc]                               ^

生成的Java文档中两个项目之间没有交叉链接。
这两个项目的ant任务如下:
Common:
<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>

有什么想法可以帮助我让应用程序引用common吗?

抱歉,我刚刚删除了我的回答。这似乎是一个Ant类路径问题。我是一个Maven用户,对Ant没有经验。 - Gray
Bar类包是否可访问,因此未包含在JavaDoc中? - Gandalf
Bar是common项目的一部分。它存在于javadoc中,应该通过添加链接http://intranet.blahblah.com/api/common/docs/来覆盖。我已经检查了相应的javadoc页面是否存在于此URL下。我甚至检查了Web服务器日志,以查看是否正在访问package-list文件,并且在该文件中提到了com.blahblah.common.foo。就我所写的内容而言,我是否走上了正确的道路? - Philip Couling
1个回答

3
<link>元素(或命令行javadoc的-link选项)仅帮助生成链接,但Javadoc在较早的阶段停止工作,如果您的应用程序类引用了未知(常见)类,则无法真正使用它。在这方面,Javadoc的工作方式与Javac相同-您必须以某种方式将其指向要使用的类,即它们必须在类路径中。您可以使用<classpath>元素指向jar文件或类目录,或使用<sourcepath>元素指向源代码(如果需要从中继承一些注释,请使用此选项)。这对于链接到标准API不需要,因为它已经包含在编译器中。请注意,以这种方式进行链接需要Javadoc从此URL下载package-list - 您可以指向包含此包列表文件的本地目录。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接