标签: maven-javadoc-plugin

如何使 Maven 构建(目标站点)因 Javadoc 警告而失败?

我正在以目标构建我的 Maven 项目site。输出中有 Javadoc 警告。在这种情况下,我的 Maven 构建必须失败。有没有办法做到这一点?

这是我的 POM 的代码片段(我使用的是 Maven 3.3):

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-site-plugin</artifactId>
    <version>3.5</version>
    <configuration>
        <generateReports>true</generateReports>
    </configuration>
</plugin>
<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-javadoc-plugin</artifactId>
    <version>2.10.3</version>
    <configuration>
        <show>private</show>
        <failOnError>true</failOnError>
    </configuration>
</plugin>
Run Code Online (Sandbox Code Playgroud)

java javadoc maven maven-javadoc-plugin maven-site-plugin

8
推荐指数
1
解决办法
2601
查看次数

如何使 Maven Javadoc 插件适用于任何 Java 版本

我正在使用 Maven Javadoc 插件,如下所示

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-javadoc-plugin</artifactId>
    <version>3.1.1</version>
    <executions>
        <execution>
            <id>attach-javadocs</id>
            <goals>
                <goal>jar</goal>
            </goals>
        </execution>
    </executions>
</plugin>
Run Code Online (Sandbox Code Playgroud)

我安装了多个 JDK 版本,并且希望能够使用其中任何一个版本构建项目。上面的配置在 Java 8 上工作正常,但在 Java 11 上失败并出现以下错误

无法在项目上执行目标 org.apache.maven.plugins:maven-javadoc-plugin:3.1.1:jar (attach-javadocs) ...: MavenReportException: 生成 Javadoc 时出错: 无法找到 javadoc 命令: 环境变量JAVA_HOME 设置不正确。

显而易见的解决方案是设置 JAVA_HOME。但正如我提到的,我有多个版本的 JDK,因此每次我想使用另一个版本时都重新配置 JAVA_HOME 一点也不方便。

另一个解决方案(来自Unable to find javadoc command - maven)是将以下配置添加到插件中:

<configuration>
    <javadocExecutable>${java.home}/bin/javadoc</javadocExecutable>
</configuration>
Run Code Online (Sandbox Code Playgroud)

这使得它可以与 Java 11 一起使用,但会破坏 Java 8,因为javadoc位置就${java.home}/../bin/javadoc在这种情况下。

理想情况下,我总是想从 Maven 使用的 java 可执行文件所在的目录中使用javadoc,但我还没有找到使用 Maven Javadoc 插件来实现这一点的方法。

java maven maven-javadoc-plugin

8
推荐指数
1
解决办法
6276
查看次数

如何使javadoc继承适用于外部API?(与Maven2)

当类重写具体方法或实现和抽象方法时,除非显式覆盖,否则Javadoc会自动继承.

或者,至少该工具尝试这样做.它似乎不适用于链接的外部API.例如,当我在我的代码实现java.util.Map或JRE中的其他内容时,javadocs不会从JRE javadocs/apidocs继承/复制.

在我的具体情况下,我试图在Maven2 Javadoc插件中配置它,但是当我直接运行javadoc CLI工具时它是一样的.

我的Maven2 Javadoc插件配置目前如下所示:

<reporting>
  <plugins>
    <plugin>
      <groupId>org.apache.maven.plugins</groupId>
      <artifactId>maven-javadoc-plugin</artifactId>
      <version>2.7</version>
      <configuration>
        <stylesheet>maven</stylesheet>
        <links>
          <link>http://download.oracle.com/javase/6/docs/api</link>
        </links>
      </configuration>
    </plugin>
  </plugins>
</reporting>
Run Code Online (Sandbox Code Playgroud)

有关如何使这项工作的任何指示?

java maven-2 javadoc maven-javadoc-plugin

7
推荐指数
1
解决办法
2748
查看次数

如何在 maven-javadoc-plugin 中跳过测试 api 文档?

在使用以下配置执行“clean skip:skip”后,我想跳过在“target/site”文件夹中生成“testapidocs”文件夹。

构建配置:

<build>
<plugins>
    .................
       <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-site-plugin</artifactId>
            <version>3.2</version>
        </plugin>

    </plugins>
   .........
</build>
Run Code Online (Sandbox Code Playgroud)

报告配置:

   <reporting>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-javadoc-plugin</artifactId>
            <version>2.9</version>
        </plugin>
    </plugins>
</reporting>
Run Code Online (Sandbox Code Playgroud)

当我运行“clean site:site”时,它会在“target”目录下创建以下文件夹:

目标/站点/apidoc

目标/站点/testapidocs - 想跳过这个

maven-3 maven-javadoc-plugin maven-site-plugin

7
推荐指数
1
解决办法
3452
查看次数

maven 3 javadoc插件不接受excludepackagename配置

我试图从javadoc网站中排除一堆软件包.

不幸的是,这个插件似乎过着自己的生活,当它被配置为报告插件access denied时,它在移动文件时失败了,因此它被更改为普通插件,然后配置为以站点目标(聚合)运行.通过这样做,我们生成了javadoc,并在网站下发布它应该是.

但似乎插件的配置参数根本没有生效.我试图移动<excludePackageNames>元素 - 既是一般配置又是聚合目标的特定配置 - 我甚至为我们的整个代码库添加了一个排除项,所有文件仍然生成.

我要做的是简单地删除一些不应该在javadoc中的软件包.谁拥有这个插件和配置打得很好,排除包?

这是我现在使用的配置,创建了javadoc,但生成了包括排除在内的所有包.

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-javadoc-plugin</artifactId>
    <version>2.8</version>
    <configuration>
        <excludePackageNames>my.company.packages.*</excludePackageNames>
    </configuration>
    <executions>
        <!-- Hook up the Javadoc generation on the site phase -->
        <execution>
            <id>aggregate</id>
            <goals>
                <goal>aggregate</goal>
            </goals>
            <phase>site</phase>
        </execution>
    </executions>
</plugin>
Run Code Online (Sandbox Code Playgroud)

有什么想法,很高兴吗?

maven-3 maven maven-javadoc-plugin

6
推荐指数
1
解决办法
1238
查看次数

使用maven-javadoc-plugin和Maven 3生成多个javadoc报告

我们使用自定义doclet从自定义javadoc标记生成报告,并使用Maven网站插件和javadoc插件生成此报告和常规Java API文档.

POM的部分如下所示:

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-javadoc-plugin</artifactId>
    <reportSets>
        <reportSet>
            <id>html</id>
            <reports>
                <report>javadoc</report>
            </reports>
        </reportSet>
        <reportSet>
            <id>custom_report</id>
            <configuration>
                ...
            </configuration>
            <reports>
                <report>javadoc</report>
            </reports>
        </reportSet>
    </reportSets>
</plugin>
Run Code Online (Sandbox Code Playgroud)

在Maven 2下,这很好用,但是在Maven 3中只生成了一个报告,它是POM中指定的最后一个报告(通过交换reportSet元素来确定).

经过一些实验,我发现如果我将常规报告的目标从"javadoc"改为"test-javadoc",那么我从两个报告集中得到了输出.所以问题似乎是,使用Maven 3我无法生成两个使用相同javadoc-plugin目标的报告.

这是一个错误,还是有一些我错过的会员?我移离行家-Javadoc的插件安装reportingconfiguration该网站插件如在描述http://maven.apache.org/plugins/maven-site-plugin-3.0-beta-3/maven-3.html,至徒劳无功.我正在使用Maven 3.0.4,maven-site-plugin 3.0-beta-3和maven-javadoc-plugin 2.8.1.

谢谢!

maven-3 maven-javadoc-plugin maven-site-plugin

6
推荐指数
1
解决办法
1335
查看次数

Maven"跳过javadoc代"为什么?

我正在研究一个maven项目,并希望生成最基本的javadoc.

这是我添加到我的pom.xml的插件

<build>
<plugins>
    <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-javadoc-plugin</artifactId>
        <version>2.8.1</version>
        <executions>
            <execution>
                <id>attach-javadocs</id>
                <phase>package</phase>
                <goals>
                    <goal>jar</goal>
                </goals>
            </execution>
        </executions>
    </plugin>
</plugins>
</build>
Run Code Online (Sandbox Code Playgroud)

然后我运行目标mvn clean包,并成功清理和打包我的项目后说

[INFO] --- maven-javadoc-plugin:2.8.1:jar (attach-javadocs) @ project-name ---
[INFO] Skipping javadoc generation.
Run Code Online (Sandbox Code Playgroud)

我试过添加属性:

<properties>
    <maven.javadoc.skip>false</maven.javadoc.skip>
</properties>
Run Code Online (Sandbox Code Playgroud)

并且还在cmd提示符中尝试了这个:

mvn clean package -Dmaven.javadoc.skip=false
Run Code Online (Sandbox Code Playgroud)

没有区别...

我公然失踪的是什么?

maven-2 javadoc maven-3 maven maven-javadoc-plugin

6
推荐指数
2
解决办法
1万
查看次数

如何在构建版本不是-SNAPSHOT时启用maven配置文件?

我正在尝试使用gitflow-helper-maven-plugin我的maven构建的扩展.

因此,我想配置我的项目,以便在构建发布版本时运行一些额外的步骤,并在编译SNAPSHOT版本时跳过它们,但是如果${project.version}包含,我找不到启用配置文件的方法-SNAPSHOT.

有什么建议吗?

java maven maven-javadoc-plugin maven-source-plugin maven-profiles

6
推荐指数
1
解决办法
2248
查看次数

swagger-maven-plugin触发Javadoc警告:元素值必须是Java注释中的常量表达式(但它是!)

Javadoc(通过Maven)在我的Java JAX-RS接口方法签名中给出了以下错误:

error: element value must be a constant expression
Run Code Online (Sandbox Code Playgroud)

这是我的JAX-RS接口:

public interface FooResource {

  @Consumes(APPLICATION_FORM_URLENCODED_UTF_8)
  public void bar();

}
Run Code Online (Sandbox Code Playgroud)

Javdoc给出了错误@Consumes.以下是APPLICATION_FORM_URLENCODED_UTF_8出现在MyAppConstants同一项目中的定义:

public static final String APPLICATION_FORM_URLENCODED_UTF_8 =
    APPLICATION_FORM_URLENCODED + ";" + CHARSET_PARAMETER + "=UTF-8";
Run Code Online (Sandbox Code Playgroud)

这里是这样定义的APPLICATION_FORM_URLENCODED,它出现在javax.ws.rs.core.MediaType:

public final static String APPLICATION_FORM_URLENCODED = "application/x-www-form-urlencoded";
Run Code Online (Sandbox Code Playgroud)

这里是定义CHARSET_PARAMETER,也出现在javax.ws.rs.core.MediaType:

public static final String CHARSET_PARAMETER = "charset";
Run Code Online (Sandbox Code Playgroud)

现在我问你:APPLICATION_FORM_URLENCODED_UTF_8在编译时不是很常见?

错误消息没有说我必须提供文字.它说我必须提供一个常数.那么这不是一个常数呢?

(我几乎可以发誓这种情况曾经有效但突然停止了工作.)

更新: 找到原因,但仍然不明白.

出于某种原因,仅仅包括swagger-maven-plugin在POM中就会触发这个问题!我的代码根本没有改变,但是一旦我添加了以下依赖项,我突然得到现有代码的Javadoc警告!

<dependency>
  <groupId>com.github.kongchen</groupId> …
Run Code Online (Sandbox Code Playgroud)

java annotations javadoc maven-javadoc-plugin swagger-maven-plugin

6
推荐指数
1
解决办法
282
查看次数

maven-javadoc-plugin错误javadoc:错误 - 无法读取输入长度= 1,目录名称中包含非ASCII字符

我在Windows 10上使用OpenJDK 11.我有一个非常简单的POM,用于生成Javadocs的单个Java文件.这是一个摘录:

<properties>
  <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
  <maven.compiler.source>11</maven.compiler.source>
  <maven.compiler.target>11</maven.compiler.target>
</properties>

<build>
  <plugins>
    <plugin>
      <groupId>org.apache.maven.plugins</groupId>
      <artifactId>maven-javadoc-plugin</artifactId>
      <version>3.0.1</version>
      <executions>
        <execution>
          <goals>
            <goal>jar</goal>
          </goals>
        </execution>
      </executions>
    </plugin>
  </plugins>
</build>
Run Code Online (Sandbox Code Playgroud)

奇怪的是刚刚运行mvn clean package会导致错误:

[ERROR] Failed to execute goal org.apache.maven.plugins:maven-javadoc-plugin:3.0.1:jar (default) on project foobar: MavenReportException: Error while generating Javadoc:
[ERROR] Exit code: 1 - javadoc: error - cannot read Input length = 1
[ERROR]
[ERROR] Command line was: C:\bin\jdk-11\bin\javadoc.exe @options @packages
Run Code Online (Sandbox Code Playgroud)

target/apidocs只有三个文件:javadoc.bat,options,和packages.该options文件是最有趣的.它明确地说UTF-8到处都是,应该如此.但看看这些线:

-sourcepath …
Run Code Online (Sandbox Code Playgroud)

java maven maven-javadoc-plugin

6
推荐指数
1
解决办法
444
查看次数