【问题标题】:Maven: How do I exclude specific source files from javadoc?Maven:如何从 javadoc 中排除特定的源文件?
【发布时间】:2013-01-09 04:55:30
【问题描述】:

我需要使用 Maven 从 Javadoc 中排除特定的源文件(不仅仅是包)。 设置对我不起作用:它只允许您排除某些包。有一个 设置,它基本上没有使用示例的文档。它只是说:

“sourceFileExcludes:源文件的排除过滤器。如果您指定子包或子包排除,这些将被忽略。”

所以,基本上,我需要忽略所有以 Mock 开头的 Java 文件,以及两个包中的所有 Java 文件。由于如果我指定 excludePackageNames,sourceFileExcludes 将被忽略,因此我无法将它们组合起来。所以我尝试了这个:

<sourceFileExcludes>
    <exclude>net/my/packagename/mock</exclude>
    <exclude>net/my/packagename/samples</exclude>
    <exclude>**/Mock*.java</exclude>
</sourceFileExcludes>

但它没有工作。没有排除任何预期的文件。

有人知道如何使用 sourceFileExcludes 吗?

【问题讨论】:

  • This question 有点老,也有类似的问题,但细节较少。
  • 您找到解决方案了吗?我也有类似的情况,如果你找到了答案,很高兴听到它。
  • 不幸的是,我从未找到解决此问题的方法。我最终重新组织了我的项目并将样本放在一个单独的模块中(这确实是“正确的方式”)。然后我根本没有为那个模块生成 Javadoc。对不起。 :-/
  • 哇,这有点令人失望。我最终也做了同样的事情。我最终可能会尝试查找 Javadoc 插件的邮件列表,并在那里询问。如果我这样做了,我会在这里报告。
  • 不确定它是否能正常工作,这个标签有一个错误:jira.codehaus.org/browse/…

标签: maven javadoc


【解决方案1】:

那么这个呢?

<sourceFileExcludes>
    <exclude>net/my/packagename/mock/*.java</exclude>
    <exclude>net/my/packagename/samples/*.java</exclude>
    <exclude>**Mock*.java</exclude>
</sourceFileExcludes>

【讨论】:

  • 我们越来越近了:&lt;sourceFileExcludes&gt; &lt;exclude&gt;net/nicholaswilliams/java/mock/**&lt;/exclude&gt; &lt;exclude&gt;net/nicholaswilliams/java/licensing/mock/**&lt;/exclude&gt; &lt;exclude&gt;net/nicholaswilliams/java/licensing/samples/**&lt;/exclude&gt; &lt;exclude&gt;**Mock*.java&lt;/exclude&gt; &lt;/sourceFileExcludes&gt; 排除的包正在阻止我的包出现,这很好。但是有一个顽固的文件(不幸的是我不能移动),它不会被第四个排除排除。我什至尝试了一个非常明确的&lt;exclude&gt;net/my/packagename/MockLicenseHelper.java&lt;/exclude&gt;
  • 您尝试更改订单吗?即 **Mock*.java 首先
  • 我现在试过了。在顶部并没有什么不同。我开始认为这是一个错误。
  • 最后一件事:确保在运行前清理您的 javadoc 输出目录 + 仔细检查拼写错误
  • 是的,我正在清理整个输出目录,然后再次运行整个 Maven 构建,没有任何变化。我还运行了 Maven -debug,在 Javadoc 时它列出了所有排除规则,并且列出了我的所有四个规则。我复制并粘贴了包名和类名,所以那里没有拼写错误。就像它没有应用规则一样。
【解决方案2】:
  <sourceFileIncludes>
    <includes>com/cod/user/**</includes>

   </sourceFileIncludes>
  <sourceFileExcludes>
 <exclude>com/cod/user/impl/**</exclude>

包括你想要的,排除其他的

【讨论】:

    【解决方案3】:

    目前可能无法正常工作。插件问题跟踪器中记录了错误 - MJAVADOC-365

    【讨论】:

    • 谢谢。不久前我搜索了那个问题跟踪器,但找不到错误。本来想报一个,但一直没搞定。现在我不必了!很遗憾,这个 bug 甚至一年多都没有得到回应(而且它有一个补丁!)。
    • 我同意,我遇到了同样的问题 :-(
    • 我提交了一个增强补丁和一个测试用例,它已经被应用了。看起来它将在插件的 2.11 版中。
    • 好消息!谢谢,@rec!
    • 看起来它在 2.10.2 中已修复
    【解决方案4】:

    您还需要指定源路径。然后 sourceFileExcludes 将起作用。

    <sourceFileExcludes>
      <exclude>CryptoUtils.java</exclude>
    </sourceFileExcludes>
    <sourcepath>${basedir}/src/main/java/com/sdk/entity;${basedir}/src/main/java/com/sdk/main;${basedir}/src/main/java/com/sdk/util</sourcepath>
    笔记 :

    CryptoUtils 在“/src/main/java/com/sdk/util”中

    【讨论】:

      猜你喜欢
      • 2016-10-04
      • 2011-06-30
      • 2021-03-09
      • 1970-01-01
      • 1970-01-01
      • 2010-11-25
      • 2011-11-10
      • 1970-01-01
      • 2017-12-01
      相关资源
      最近更新 更多