Te darás cuenta rápidamente de que JDK8 es mucho más estricto (por defecto) cuando se trata de Javadoc. ( enlace - ver el último punto)
Si nunca genera ningún Javadoc, por supuesto, no experimentará ningún problema, pero cosas como el proceso de lanzamiento de Maven y posiblemente sus compilaciones de CI fallarán de repente donde funcionaron bien con JDK7. Cualquier cosa que verifique el valor de salida de la herramienta Javadoc ahora fallará. JDK8 Javadoc es probablemente también más detallado en términos de warnings
comparación con JDK7, pero ese no es el alcance aquí. Estamos hablando errors
!
Esta pregunta existe para recopilar propuestas sobre qué hacer al respecto. Cuál es el mejor enfoque ? ¿Deben estos errores corregirse de una vez por todas en los archivos de código fuente? Si tiene una gran base de código, esto podría ser mucho trabajo. ¿Qué otras opciones existen?
También puede comentar con historias de lo que ahora falla y que anteriormente pasaría.
Historias de terror de lo que ahora falla
herramientas wsimport
wsimport
La herramienta es un generador de código para crear consumidores de servicios web. Está incluido en el JDK. Incluso si utiliza la wsimport
herramienta de JDK8, producirá un código fuente que no puede compilarse con el compilador javadoc de JDK8 .
Etiqueta @author
Estoy abriendo archivos de código fuente de 3 a 4 años y veo esto:
/**
* My very best class
* @author John <[email protected]>
*/
Esto ahora falla debido al carácter <. Estrictamente hablando, esto está justificado, pero no es muy indulgente.
Tablas HTML
Tablas HTML en su Javadoc? Considere este HTML válido:
/**
*
* <table>
* <tr>
* <td>Col1</td><td>Col2</td><td>Col3</td>
* </tr>
* </table>
*/
Esto ahora falla con el mensaje de error no summary or caption for table
. Una solución rápida es hacer esto:
/**
*
* <table summary="">
* <tr>
* <td>Col1</td><td>Col2</td><td>Col3</td>
* </tr>
* </table>
*/
pero ¿por qué esto tiene que ser un error de detener el mundo de la herramienta Javadoc me gana?
Cosas que ahora fallan por razones más obvias
- Enlaces inválidos, p. Ej.
{@link notexist}
- HTML con formato incorrecto, p. Ej.
always returns <code>true<code> if ...
ACTUALIZAR
Enlaces:
Excelente blog sobre el tema de Stephen Colebourne .
-Xdoclint
inclusojavac
para decirle que revise los documentos mientras compilas ...Respuestas:
Por ahora, la forma más fácil que sé para evitar el Javadoc Javadoc más estricto cuando uso Maven es desactivarlo.
Dado que el parámetro
-Xdoclint:none
solo existe en Java 8, la definición de este parámetro rompe la compilación para cualquier otro Java. Para evitar esto, podemos crear un perfil que estará activo solo para Java 8, asegurándonos de que nuestra solución funcione independientemente de la versión de Java.Solo agrégalo a tu POM y listo.
Para usuarios de maven-javadoc-plugin 3.0.0:
Reemplazar
<additionalparam>-Xdoclint:none</additionalparam>
por
<doclint>none</doclint>
Gracias @banterCZ!
fuente
<activation>
parte Pero desearía que a alguien se le ocurriera una herramienta que pudiera revisar esos muchos archivos fuente y ayudar al desarrollador a corregir los errores ... en lugar de simplemente apagar DocLint.<additionalparam>-Xdoclint:none</additionalparam>
por<doclint>none</doclint>
Si está utilizando el complemento maven javadoc, puede usar la
failOnError
opción para evitar que se detenga si encuentra algún error html:O puede desactivar completamente las estrictas opciones html con:
Para obtener más información .
fuente
-Xdoclint
opción. La esperanza es que se ignorará en silencio si se ejecuta con un Javadoc JDK7.Desde la versión 3.0.0 de maven-javadoc-plugin, doclint se configura a través de la etiqueta XML dedicada
fuente
Me gusta la solución de @ ThiagoPorciúncula, pero no fue lo suficientemente lejos para mí.
Por lo general, ya tengo el
additionalparam
conjunto de complementos javadoc que el perfil no anula. Debido a esto tuve que:disableDoclint
propiedad para que esté vacía de forma predeterminada.disableDoclint
propiedad en-Xdoclint:none
${disableDoclint} in the
adicionalparamsection of the
maven-javadoc-plugin`.Esto parece funcionar bien aunque detallado.
Luego, abajo, podría usar la
${disableDoclint}
variable opcional en laadditionalparam
sección que ya había definido.Esto funciona en Java 8 pero no causa errores de sintaxis en Java 7. ¡Guau!
fuente
Tenga en cuenta que para el error
no summary or caption for table
, el uso<table summary="">
ya no funcionará. Si esa es su situación, agregue un<caption>
elemento a su tabla, como este:Espero que esto ayude a alguien por ahí. Me tomó un tiempo hasta que descubrí esto.
fuente
<table summary="">
truco aún funciona en JDK8. (recién probado en jdk1.8.0_201)summary="..."
El atributo ya no es compatible con HTML5 (la salida predeterminada para JDK 11 javadoc). También es compatible con JDK 8.