如何通过命令行禁用Maven Javadoc插件?

293

pom.xml中我有这样的声明

    <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-javadoc-plugin</artifactId>
        <executions>
            <execution>
                <id>attach-javadocs</id>
                <goals>
                    <goal>jar</goal>
                </goals>
            </execution>
        </executions>
    </plugin>

有没有办法从命令行关闭它?

我知道我可以将其提取到配置文件中,但这不是我想要的。

7个回答

559

可以通过将属性maven.javadoc.skip设置为true来跳过Javadoc生成[1],即:

-Dmaven.javadoc.skip=true
(而不是false

1
请参考@Christoph-Tobias Schenke的答案,了解如何处理子模块。 - ecoe
这个参数也可以直接在Jenkins中设置,以避免这个问题(在“配置系统”中定义的全局MAVEN_OPTS)。 - King Midas
29
这对我没用,但我了解到当你使用Maven发布插件时,需要以不同的方式传递参数。这个可以用来代替: mvn release:perform -Darguments="-Dmaven.javadoc.skip=true" - PatS

234

看起来,简单的方法

-Dmaven.javadoc.skip=true

在使用发布插件时无法正常工作。在这种情况下,您必须将参数作为“argument”传递。

mvn release:perform -Darguments="-Dmaven.javadoc.skip=true"

12
如果您需要添加两个参数,可以像这样用空格将它们分开:-Darguments="-DskipTests -Dmaven.javadoc.skip=true" - Graham
6
在根级别的pom.xml配置中添加以下内容也可以起到作用: <configuration><arguments>-DskipTests -Dmaven.javadoc.skip=true</arguments></configuration>。请注意,这是翻译后的结果,不包括解释或其他内容。 - nclark
2
此外,skipTests 还有一个更强的版本,可以跳过测试的编译:-Dmaven.tests.skip=true - nclark
3
哇,为什么Maven发布插件会这样做...在这个问题上完全浪费了一些时间。 - jediwompa
某种方式,这对我不起作用。 - jediz

146

您可以使用maven.javadoc.skip属性跳过插件的执行,参照Mojo的javadoc。您可以将该值指定为Maven属性:

<properties>
    <maven.javadoc.skip>true</maven.javadoc.skip>
</properties>

或者作为命令行参数:-Dmaven.javadoc.skip=true,以跳过生成Javadocs。


2
这个答案并没有真正回答问题,因为它指出应该通过命令行来进行切换。 - Sinisha Mihajlovski
4
对于多模块项目中有一些模块不会生成 javadoc 并可能导致错误的情况,这是完美的解决方案。 - Emmanuel Bourg

25
在根级pom.xml中的发布插件配置中添加:

<configuration>
    <arguments>-Dmaven.javadoc.skip=true</arguments>
</configuration>

2
这并不是命令行中所需的正确方式,但如果您需要永久禁用javadoc,则它非常有效。 - Lorenzo Sciuto

4
在 pom.xml 文件中,
第一种选择:使用属性。
<properties>
    <maven.javadoc.skip>true</maven.javadoc.skip> 
</properties>

第二种选项:使用build > pluginManagement > plugins > plugin > configuration。
<build>
    <pluginManagement>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-release-plugin</artifactId>
                <version>2.5.3</version>
                <configuration>
                    <goals>deploy</goals>
                    <arguments>-Dmaven.javadoc.skip=true</arguments>
                </configuration>
            </plugin>

第三个选项:在调用mvn时(这个对我没用)
 mvn clean install -Dmaven.javadoc.skip=true

3

对于新手Powershell用户来说,重要的是要知道'.'是Powershell的一个语法元素,因此开关必须用双引号括起来:

mvn clean install“-Dmaven.javadoc.skip=true”


1
谢谢。我正在寻找这个,以设置VSCode。 - tmoasz

1

一个重要的事情是:如果你在pom.xml中的maven-javadoc-plugin的配置中设置了<skip>false<skip>,那么-Dmaven.javadoc.skip=true将不起作用,至少对于maven-daemon(也称为mvndaemon或mvnd)。


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