Javadoc не работает на Oracle JDK, но не на OpenJDK

У меня простой проект с SRC / основной / Java / тест / Test.java

package test;
/**
 * Class java doc
 */ 
public class Test
{
    /**
     * Wrong java doc
     *
     * @param test
     * @return 
     */
    public int aMethod(int param){
        return 0;
    }
}

и pom.xml

<?xml version = "1.0" encoding = "UTF-8" standalone = "yes"?>
<project xmlns = "http://maven.apache.org/POM/4.0.0" xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation = "http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>com.test</groupId>
  <artifactId>test</artifactId>
  <version>1.0.0-SNAPSHOT</version>
  <build>
      <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-compiler-plugin</artifactId>
        <version>3.0</version>
        <configuration>
          <source>1.8</source>
          <target>1.8</target>
          <encoding>UTF-8</encoding>
        </configuration>
      </plugin>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-javadoc-plugin</artifactId>
        <version>3.0.0</version>
        <executions>
          <execution>
            <id>attach-javadocs</id>
            <goals>
              <goal>jar</goal>
            </goals>
          </execution>
        </executions>
      </plugin>
    </plugins>
  </build>
</project>

При сборке в Linux с помощью oracle-jdk8 (161) происходит сбой из-за неправильной документации javadoc.

[ERROR] Failed to execute goal org.apache.maven.plugins:maven-javadoc-plugin:3.0.0:jar (attach-javadocs) on project test: MavenReportException: Error while generating Javadoc: 
[ERROR] Exit code: 1 - /home/D070061/SAPDevelop/test/src/main/java/test/Test.java:10: error: @param name not found
[ERROR]      * @param test

Если сделать то же самое с open-jdk8 (v171), сборка будет успешной

Я переключаю java с sudo update-alternatives --config java

Кто-нибудь знает, почему он не работает на OpenJDK? Это ошибка или нужны особые параметры?

Документация неверна, это должно быть @param param мое описание параметра.

JEY 09.07.2018 14:40

Да, я знаю, что документация неверна. Переформулирую вопрос. Почему не работает OpenJDK?

Vlad Isajkin 09.07.2018 14:42

Что произойдет, если вы будете использовать те же номера версий? Оба на v161 или оба на v171?

Andrew Henle 09.07.2018 14:45

Поскольку сейчас существует 161 openJdk, я пробовал его с 162 с тем же результатом

Vlad Isajkin 10.07.2018 08:56
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
2
4
226
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Вы пробовали отключить DocLint в конфигурации Maven? Вы можете легко сделать это, добавив -Xdoclint: none к глобальным свойствам в вашем pom.xml:

<?xml version = "1.0" encoding = "UTF-8" standalone = "yes"?>
<project xmlns = "http://maven.apache.org/POM/4.0.0" xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation = "http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>com.test</groupId>
  <artifactId>test</artifactId>
  <version>1.0.0-SNAPSHOT</version>
  <properties>
      <additionalparam>-Xdoclint:none</additionalparam>
  </properties>
  <build>
      <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-compiler-plugin</artifactId>
        <version>3.0</version>
        <configuration>
          <source>1.8</source>
          <target>1.8</target>
          <encoding>UTF-8</encoding>
        </configuration>
      </plugin>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-javadoc-plugin</artifactId>
        <version>3.0.0</version>
        <executions>
          <execution>
            <id>attach-javadocs</id>
            <goals>
              <goal>jar</goal>
            </goals>
          </execution>
        </executions>
      </plugin>
    </plugins>
  </build>
</project>

Моя цель не в том, чтобы деактивировать doclint для генерации JavaDoc, а в том, чтобы найти способ генерировать синтаксически правильный JavaDoc. Генерация должна завершиться неудачей, если doc linter обнаружит какую-то проблему. В моем примере openjdk вообще не использует doclint. Вопрос в том, почему

Vlad Isajkin 10.07.2018 08:55
Ответ принят как подходящий

Похоже, что Debian исправляет javadoc, чтобы отключить doclint по умолчанию, как и предположительно некоторые производные и другие дистрибутивы.

Плагин Maven Javadoc добавил элемент конфигурации <doclint> в 3.0.0, поэтому для этой версии и более поздних вы должны иметь возможность повторно включить doclint, указав, например:

<plugin>
    <artifactId>maven-javadoc-plugin</artifactId>
    <version>3.1.0</version>
    <configuration>
        <doclint>all</doclint>
    </configuration>
    <executions>
        <execution>
            <id>attach-javadocs</id>
            <goals>
                <goal>jar</goal>
            </goals>
        </execution>
    </executions>
</plugin>

Другие вопросы по теме