Вы быстро поймете, что JDK8 намного строже (по умолчанию), когда дело касается Javadoc. ( ссылка - см. последний пункт)
Если вы никогда не создаете никаких документов Javadoc, то, конечно, у вас не возникнет никаких проблем, но такие вещи, как процесс выпуска Maven и, возможно, ваши сборки CI внезапно выйдут из строя там, где они отлично работали с JDK7. Все, что проверяет значение выхода инструмента Javadoc, теперь не сработает. JDK8 Javadoc, вероятно, также более warnings
подробен по сравнению с JDK7, но здесь речь не идет об этом. Речь идет о errors
!
Этот вопрос существует для сбора предложений о том, что с этим делать. Какой подход лучше? Следует ли раз и навсегда исправить эти ошибки в файлах исходного кода? Если у вас огромная кодовая база, это может потребовать много работы. Какие еще варианты существуют?
Вы также можете комментировать истории о том, что сейчас не удается, что раньше прошло.
Ужасные истории о том, что сейчас не удается
инструменты wsimport
wsimport
инструмент - это генератор кода для создания потребителей веб-сервисов. Он включен в JDK. Даже если вы используете wsimport
инструмент из JDK8, он, тем не менее, создаст исходный код, который нельзя скомпилировать с помощью компилятора javadoc из JDK8 .
тег @author
Я открываю файлы исходного кода 3-4-летней давности и вижу следующее:
/**
* My very best class
* @author John <john.doe@mine.com>
*/
Теперь это не удается из-за символа <. Строго говоря, это оправдано, но не прощает ошибок.
HTML таблицы
Таблицы HTML в вашем Javadoc? Рассмотрим этот действительный HTML:
/**
*
* <table>
* <tr>
* <td>Col1</td><td>Col2</td><td>Col3</td>
* </tr>
* </table>
*/
Теперь это не срабатывает с сообщением об ошибке no summary or caption for table
. Одно быстрое исправление - сделать вот так:
/**
*
* <table summary="">
* <tr>
* <td>Col1</td><td>Col2</td><td>Col3</td>
* </tr>
* </table>
*/
но почему это должна быть ошибка остановки мира из инструмента Javadoc, меня бьет ??
То, что сейчас терпит неудачу по более очевидным причинам
- Недействительные ссылки, например
{@link notexist}
- Неправильный HTML, например
always returns <code>true<code> if ...
ОБНОВИТЬ
Ссылки:
Отличный блог на эту тему со Стивеном Колборн .
-Xdoclint
даже с,javac
чтобы указать ему, чтобы он проверял документы во время компиляции…Ответы:
На данный момент самый простой способ обойти более строгий Java 8 Javadoc при использовании Maven - это его деактивировать.
Поскольку параметр
-Xdoclint:none
существует только в Java 8, определение этого параметра прерывает сборку для любой другой Java. Чтобы этого не произошло, мы можем создать профиль, который будет активен только для Java 8, чтобы наше решение работало независимо от версии Java.Просто добавьте это в свой POM, и все готово.
Для пользователей maven-javadoc-plugin 3.0.0:
замещать
<additionalparam>-Xdoclint:none</additionalparam>
по
<doclint>none</doclint>
Спасибо @banterCZ!
источник
<activation>
роль. Но я бы хотел, чтобы кто-нибудь придумал инструмент, который мог бы просматривать эти многочисленные исходные файлы и помогать разработчику в исправлении ошибок ... вместо того, чтобы просто отключать DocLint.<additionalparam>-Xdoclint:none</additionalparam>
на<doclint>none</doclint>
Если вы используете плагин maven javadoc, вы можете использовать
failOnError
опцию, чтобы предотвратить его остановку, если он обнаружит какие-либо ошибки html:Или вы можете полностью отключить строгие параметры HTML с помощью:
Для получения дополнительной информации .
источник
-Xdoclint
вариант. Надеюсь, он будет тихо проигнорирован, если будет выполнен с JDK7 Javadoc?Начиная с версии 3.0.0 maven-javadoc-plugin, doclint настраивается через специальный тег XML.
источник
Мне нравится решение @ ThiagoPorciúncula, но для меня оно не зашло достаточно далеко.
Обычно у меня уже есть
additionalparam
набор плагинов javadoc, который не отменяется профилем. Из-за этого пришлось:disableDoclint
свойство как пустое по умолчанию.disableDoclint
свойства значение-Xdoclint:none
${disableDoclint} in the
дополнительных параметровsection of the
maven-javadoc-plugin`.Кажется, это работает хорошо, хотя и многословно.
Затем, ниже, я мог бы использовать необязательную
${disableDoclint}
переменную вadditionalparam
разделе, который я уже определил.Это работает под java 8, но не вызывает синтаксических ошибок под java 7. Ура!
источник
Обратите внимание, что для ошибки
no summary or caption for table
использование<table summary="">
больше не работает. Если это ваша ситуация, добавьте<caption>
элемент в свою таблицу, например:Надеюсь, это поможет кому-то там. Мне потребовалось время, прежде чем я узнал это.
источник
<table summary="">
трюк все еще работает на JDK8. (только что тестировался на jdk1.8.0_201)summary="..."
атрибут больше не поддерживается с HTML5 (вывод по умолчанию для JDK 11 javadoc). Он также поддерживается в JDK 8.