【问题标题】:How to exclude a single module from Javadoc generation in a Maven multi module project?如何在 Maven 多模块项目中从 Javadoc 生成中排除单个模块?
【发布时间】:2016-01-02 03:34:35
【问题描述】:

我有一个这样的 Maven 多模块项目:

foo-parent
    foo-module
    foo-module-new
    foo-other-module1
    foo-other-module2
    pom.xml

当在 foo-parent 中调用 mvn javadoc:aggregate 时,我想从 Javadoc 生成中排除模块 foo-module

在我的情况下,使用参数excludePackageNames 排除包名不起作用,因为 foo-module 和 foo-module-new 具有相同的包名。

【问题讨论】:

  • 在阅读this discussion 之后,似乎唯一的方法就是使用个人资料,就像当前的答案一样。

标签: maven maven-javadoc-plugin


【解决方案1】:

启动以下命令以仅为 foo-other-module1foo-other-module2 模块生成 javadocs(注意:始终包含聚合器模块,在本例中为 foo-parent):

mvn javadoc:aggregate -pl :foo-parent,:foo-other-module1,:foo-other-module2

从 Maven 3.2.1 开始,您还可以从反应器中排除模块,因此上述简化为

mvn javadoc:aggregate -pl '!foo-module'

【讨论】:

  • 我认为你是对的:在命令行上指定模块上的项目是目前最好的选择。虽然我更愿意将此逻辑保留在 pom.xml 中。
  • 还要注意exclusion is possible since Maven 3.2.1 并且模块名称前面没有冒号似乎也可以工作。
  • 如果您将其更改为排除而不是包含,我会接受您的回答。我真的认为在这种情况下这是更好的选择。
  • 对于所有无法彻底阅读的人(如我):答案明确指出您必须将父模块添加到要包含的模块列表中。否则,聚合仍包含来自完整项目的 Javadocs。如果您从一开始就理解这一点,它可能会为您节省一整天的时间......
  • 要么逃脱!用 \ 或用单引号括起来。 mvn javadoc:aggregate -pl \!foo-module 或 mvn javadoc:aggregate -pl '!foo-module'
【解决方案2】:
Use maven profil :

1. add in your pom :

<profiles>
    <profile>
    <id>javadoc</id>
    <modules>
        <module>module_include_javadoc1</module>
        <module>module_include_javadoc2</module>
    </modules>        
    </profile>
  </profiles>

2.
mvn javadoc:aggregate -Pjavadoc

【讨论】:

  • 在这种简单的形式中,如果所有模块都指定在父 pom 的顶部,则答案将不起作用。这是正常的非 Javadoc 构建所必需的。一般来说,我认为带有配置文件的解决方案太混乱了。没有简单的方法可以从配置文件中排除模块。
猜你喜欢
  • 1970-01-01
  • 2019-05-27
  • 2021-08-20
  • 2017-10-11
  • 1970-01-01
  • 2021-03-23
  • 1970-01-01
  • 2014-09-14
  • 1970-01-01
相关资源
最近更新 更多