Você perceberá rapidamente que o JDK8 é muito mais rigoroso (por padrão) quando se trata de Javadoc. ( link - veja o último ponto)
Se você nunca gerar nenhum Javadoc, é claro que não terá problemas, mas coisas como o processo de liberação do Maven e, possivelmente, as compilações de seus ICs falharão repentinamente onde eles funcionaram muito bem com o JDK7. Qualquer coisa que verifique o valor de saída da ferramenta Javadoc agora falhará. JDK8 Javadoc provavelmente também é mais detalhado em termos de warnings
JDK7, mas esse não é o escopo aqui. Estamos a falar errors
!
Esta pergunta existe para coletar propostas sobre o que fazer sobre isso. Qual é a melhor abordagem ? Esses erros devem ser corrigidos de uma vez por todas nos arquivos de código-fonte? Se você tem uma enorme base de código, pode ser muito trabalhoso. Que outras opções existem?
Você também pode comentar com histórias do que agora falha e que passaria anteriormente.
Histórias de horror do que agora falha
ferramentas wsimport
wsimport
A ferramenta é um gerador de código para criar consumidores de serviços da web. Está incluído no JDK. Mesmo se você usar a wsimport
ferramenta do JDK8, ela produzirá código fonte que não pode ser compilado com o compilador javadoc do JDK8 .
@author tag
Estou abrindo arquivos de código fonte de 3 a 4 anos e veja o seguinte:
/**
* My very best class
* @author John <[email protected]>
*/
Isso agora falha devido ao caractere <. A rigor, isso é justificado, mas não muito perdoador.
Tabelas HTML
Tabelas HTML no seu Javadoc? Considere este HTML válido:
/**
*
* <table>
* <tr>
* <td>Col1</td><td>Col2</td><td>Col3</td>
* </tr>
* </table>
*/
Isso agora falha com a mensagem de erro no summary or caption for table
. Uma solução rápida é fazer assim:
/**
*
* <table summary="">
* <tr>
* <td>Col1</td><td>Col2</td><td>Col3</td>
* </tr>
* </table>
*/
mas por que isso tem que ser um erro de parar o mundo da ferramenta Javadoc me bate?
Coisas que agora falham por razões mais óbvias
- Links inválidos, por exemplo
{@link notexist}
- HTML malformado, por exemplo
always returns <code>true<code> if ...
ATUALIZAR
Ligações:
Excelente blog sobre o assunto, de Stephen Colebourne .
-Xdoclint
mesmo comjavac
a dizer-lhe para verificar os documentos durante a compilação ...Respostas:
Por enquanto, a maneira mais fácil de solucionar o Javadoc Java 8 mais rigoroso ao usar o Maven é desativá-lo.
Como o parâmetro
-Xdoclint:none
existe apenas no Java 8, a definição desse parâmetro interrompe a construção de qualquer outro Java. Para evitar isso, podemos criar um perfil que estará ativo apenas para o Java 8, certificando-se de que nossa solução funcione independentemente da versão do Java.Basta adicionar isso ao seu POM e você estará pronto.
Para usuários do maven-javadoc-plugin 3.0.0:
Substituir
<additionalparam>-Xdoclint:none</additionalparam>
de
<doclint>none</doclint>
Obrigado @banterCZ!
fonte
<activation>
parte. Mas eu gostaria que alguém inventasse uma ferramenta que pudesse passar por esses muitos arquivos de origem e ajudar o desenvolvedor a corrigir os erros ... em vez de simplesmente desativar o DocLint.<additionalparam>-Xdoclint:none</additionalparam>
por<doclint>none</doclint>
Se você estiver usando o plugin maven javadoc, poderá usar a
failOnError
opção para impedir que ele pare se encontrar algum erro de html:Ou você pode desativar completamente as rigorosas opções de html com:
Para mais informações .
fonte
-Xdoclint
opção. A esperança é que ele seja ignorado silenciosamente se executado com um Javadoc JDK7?Desde a versão 3.0.0 do maven-javadoc-plugin, o doclint é configurado através da tag XML dedicada
fonte
Gosto da solução do @ ThiagoPorciúncula, mas não foi o suficiente para mim.
Normalmente, eu já tenho o
additionalparam
conjunto de plug-ins javadoc que não estavam sendo substituídos pelo perfil. Por causa disso, tive que:disableDoclint
propriedade para estar vazia por padrão.disableDoclint
propriedade como-Xdoclint:none
${disableDoclint} in the
adicionalparamsection of the
maven-javadoc-plugin`.Isso parece funcionar bem, embora detalhado.
Abaixo, eu poderia usar a
${disableDoclint}
variável opcional naadditionalparam
seção que eu já havia definido.Isso funciona no java 8, mas não causa erros de sintaxe no java 7. Woo hoo!
fonte
Observe que, para o erro
no summary or caption for table
, o uso<table summary="">
não funcionará mais. Se essa for a sua situação, adicione um<caption>
elemento à sua tabela, assim:Espero que isto seja útil a alguém. Levei um tempo até eu descobrir isso.
fonte
<table summary="">
truque ainda funciona no JDK8. (testado apenas em jdk1.8.0_201)summary="..."
O atributo não é mais suportado com HTML5 (a saída padrão para o JDK 11 javadoc). Também é suportado no JDK 8.