javadoc 子集/java 库组织

2024-05-28

我自己从来没有运行过javadoc(无论是在命令行还是ant 的 javadoc 任务 http://ant.apache.org/manual/Tasks/javadoc.html;我将使用 ant)——我需要为我编写的库生成 javadoc。

问题是我的java库被组织成几个包,并且Java中没有办法使类在库内公开但不向外界公开,所以我有一堆类public从实现的角度来看,而不是从图书馆的角度来看语义的角度。

所以我需要弄清楚两件事。

  1. (短期解决方案)有没有一种方法可以为我的库的使用者使用的类/接口/方法的特定子集生成javadoc?

  2. 我怎样才能重组图书馆以确保公共就是公共?


如果你能分开公众公众来自内部公众按包划分类(即,有一些包包含库用户所需的所有公共类,并且没有其他公共类),然后仅在这些包上运行 Javadoc。

Javadoc 的工作原理是提供要使用的包的列表(以及用于查找这些包的源路径),并仅生成这些包的文档。

对于 Ant 来说有点复杂,因为使用 Ant 的最简单方法javadoc任务,使用<packageset>,默认情况下采用给定目录中的所有包。

这是一个只有一个包的示例:

  <target name="javadoc">
    <javadoc destdir="${javadoc}"
         encoding="US-ASCII"
         charset="UTF-8"
         docencoding="UTF-8"
         use="yes"
         windowtitle="JSch API"
             sourcepath="${src}"
         >
      <arg value="-notimestamp" />
      <package name="com.jcraft.jsch" />
      <doctitle>JSch – Java Secure Channel ${version}</doctitle>
      <bottom>This is an inofficial Javadoc created by Paŭlo Ebermann.
    Have a look at the &lt;a href="http://www.jcraft.com/jsch/">official homepage&lt;/a>.
      </bottom>
      <link href="http://download.oracle.com/javase/6/docs/api/" />
    </javadoc>
  </target>

You can 查看结果 http://epaul.github.com/jsch-documentation/javadoc/,但实际上这不是一个很好的例子,因为这里的主包包含很多类not供消费者使用。


如果你处于像 JSch 这样的情况,即你无法将公众公众来自内部公众按包分类,因为您有包含公共类型和私有类型的包,所以仍然有一种方法可以做到这一点。 Javadoc 还支持不提供包名称,而是提供单个文件名作为参数。由于我刚刚花了一些时间弄清楚如何使用 ant 执行此操作,因此生成的 ant 目标代码如下:

  <target name="simple.javadoc">
    <javadoc destdir="${simple.javadoc}"
             encoding="US-ASCII"
             charset="UTF-8"
             docencoding="UTF-8"
             use="yes"
             windowtitle="simple JSch API"
             excludepackagenames="*"
             sourcepath="${src}"
             >
      <arg value="-notimestamp" />
      <sourcefiles>
        <resourcelist encoding="US-ASCII">
          <file file="simpleclasses.list" />
        </resourcelist>
      </sourcefiles>
      <doctitle>JSch – Java Secure Channel ${version} (simplified version)</doctitle>
      <bottom>This is a simplified version of the &lt;a href="http://epaul.github.com/jsch-documentation/javadoc/">inofficial Javadoc&lt;/a> created by Paŭlo Ebermann.
        Have a look at the &lt;a href="http://www.jcraft.com/jsch/">official homepage&lt;/a>.
      </bottom>
      <link href="http://download.oracle.com/javase/6/docs/api/" />
    </javadoc>
  </target>

源文件列于简单类列表 https://github.com/ePaul/jsch-documentation/blob/master/simpleclasses.list在这里,使用resourcelist。我认为一个简单的文件集includesfile=...也会起作用(而且它还允许使用模式而不是简单的列表)。

我不得不搜索很长一段时间的重要一点:如果你给出一个sourcepath属性并且不给出任何packagenames属性或<package>子元素,除了提到的文件之外,ant 将自动提供“所有包”默认值,这会导致不排除任何内容。 (我们想要sourcepath这里允许从未记录的类继承文档。)因此,我们还必须提供excludepackagenames="*",这样现在只有<sourcefiles>元素定义将记录的内容。

结果现在看起来好多了 http://epaul.github.com/jsch-documentation/simple.javadoc/,谢谢你的提问。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

javadoc 子集/java 库组织 的相关文章

  • FOP apache - 支持希伯来字母

    过去几天我一直在调查 FOP apache 中对希伯来字母的支持 用于生成 PDF 文件的项目 我看到以前有一个问题 我不太明白是否解决了 如果有支持 有人可以向我展示 重定向到简单的示例 为我提供带有希伯来字母的 XSL FO 文件 当使
  • Android update 17 似乎与外部 Jars 不兼容

    我刚刚允许我的 Mac 对其 Java 安装进行更新 现在我的一些旧罐子 例如javax mail and apache commons httpclient 正在投掷 找不到类 运行时异常 意思是 它们编译得很好 但在运行时崩溃 出现如下
  • GSON:如何从 Json 中获取不区分大小写的元素?

    下面显示的代码在以下情况下效果很好JSON对象包含jsonKey因为它被传递给该方法 我想知道 是否有一种方法可以获取分配给不区分大小写的键表示的值 Example public String getOutputEventDescripti
  • EventQueue.invokeLater vrs SwingUtilities.invokeLater

    有人可以强调这两者之间的差异以及两者都是必需的实例吗 我有一个可以互换使用两者的应用程序 但想知道其中一个是否比另一个更好 显然他们都接受Runnable object 对我来说 我想我可以使用我喜欢的那个 为什么这两个相似的功能在不同的类
  • Java 1.7.51 小程序的互联网限制

    在之前的几个月里 我为一个学术项目开发了一个沙箱 Java 小程序 由于预算有限 我无法与值得信赖的证书颁发机构签署它 随着 Java 1 7 51 的发布 我发现新的安全限制禁止执行小程序 因为缺少签名 到目前为止 我已经找到了解决这个问
  • 用 Maven 解决 jar 地狱问题?

    我正在使用两个 jars A 和 B B 是一个库 A 的类使用库 B 中的一些旧类 现在 当我将这两个 jars 包含在我的项目类路径中时 这给我带来了一个问题 因为它们的名称相同两个班级 但其中一个班级比另一个班级年长 并且行为方式不同
  • 当我收到 java.lang.NoClassDefFoundError: javax/ws/rs/client/RxInvokerProvider 错误时缺少什么依赖项?

    我有一个小项目 出于测试目的 我通过单元测试执行我的 jersey 2 客户端 但是 不幸的是 我收到了错误 我不知道还缺少什么依赖项 目前泽西岛的网页因维护而关闭 我把pom xml的相同相关部分 测试代码和测试代码也附上了 public
  • MyBatis 遵循 JPA 吗?

    作为我的第一个 ORM 我已经使用 myBatis 几个月了 现在我正在尝试学习其他东西 例如 Hibernate JPA 起初很难理解 Hibernate 和 JPA 之间的区别 经过几分钟的研究 我明白 JPA 只是一个规范 Hiber
  • 升级到 Gradle 2.0 后:在根项目上找不到属性“Compile”

    为了避免在构建 Java 源代码时出现有关特殊字符的警告 我将此行放在我的gradle build在升级到 Gradle 2 0 之前运行良好 tasks withType Compile options encoding UTF 8 升级
  • Android 上为什么会出现线程泄漏?

    我在 Android 应用程序中注意到 每次退出主屏幕时 堆大小 泄漏 都会增加 ByteArrayOutputStream 的量 我能做到的最好的办法就是添加 this mByteArrayOutputStream null 在 的最后r
  • Java错误:不是一个语句,我不知道为什么?

    我真的不确定是什么导致发生这个编译时错误 我一直在试图弄清楚 但似乎找不到问题所在 ClassTable java 253 error not a statement class c class classes nextElement Cl
  • Java客户端找不到主节点:MasterNotDiscoveredException等待[1m]

    我正在使用 vagrant 并使用 debian 软件包在其上安装了 ES elasticsearch 1 1 1 deb 在我的网络应用程序中 我使用 jar org elasticsearch elasticsearch 1 1 1 我
  • 使用 Maven 时如何在 Tomcat 7.0 中将上下文路径设置为根(“/”)

    我有一个maven项目 pom xml包含tomcat插件
  • Python Blowfish 加密

    由于我对 Java 的了解不完整 我正在努力将此加密代码转换为 Python 代码 两者应该得到完全相同的结果 帮助将不胜感激 Java函数 import javax crypto Cipher import javax crypto sp
  • 使用Java 8开发的程序可以在Java 7上运行吗?

    我有点困惑 Oracle 表示 Java 8 与 Java 7 向后 高度兼容 但是 Java 8 程序有什么可能性可以在 Java 7 上成功运行 SE EE 呢 如果第一点为真 Java 8 应用程序将在 Java 7 服务器支持上部署
  • 异常中的错误代码与异常层次结构

    您认为在异常中使用错误代码来指定错误类型可以吗 请看一下这段代码 public class MyException extends Exception public static final String ERROR CODE INVALI
  • Guava Splitter/Joiners 每次使用时都应该创建吗?

    Guava 包含用于拆分和连接字符串的实用程序 但它需要实例化 Splitter Joiner 对象才能执行此操作 这些是小对象 通常仅包含要分割 合并的字符 维护对这些对象的引用以便重用它们是一个好主意 还是在需要它们时创建它们并让它们被
  • NoClassDefFound错误:org/apache/tools/ant/util/ReaderInputStream

    我在 Intellij 中有一个带有 gradle 的 java 项目 它直到几个小时前才工作 但在进行微小更改 或者我认为是这样 后突然出现错误 Error gradle resources test analyzer main java
  • 我可以在Java中设置枚举起始值吗?

    我使用枚举来创建一些常量 enum ids OPEN CLOSE OPEN 值为零 但我希望它为 100 这可能吗 Java 枚举与 C 或 C 枚举不同 后者实际上只是整数的标签 Java 枚举的实现更像是类 它们甚至可以有多个属性 pu
  • JDK1.6 中 ManagementFactory 的托管 Mbean - NotCompliantMBeanException:

    我使用 ManagementFactory 来获取 JDK1 5 和 JBOSS 4 X 中的 ManagedMbeans 现在想将我的相同代码移至 JDK 1 6 Mbean 部分中断并抛出异常 引起原因 javax management

随机推荐