Anda akan segera menyadari bahwa JDK8 jauh lebih ketat (secara default) ketika datang ke Javadoc. ( tautan - lihat poin terakhir)
Jika Anda tidak pernah menghasilkan Javadoc maka tentu saja Anda tidak akan mengalami masalah tetapi hal-hal seperti proses rilis Maven dan mungkin membangun CI Anda tiba-tiba akan gagal di mana mereka bekerja dengan baik dengan JDK7. Apa pun yang memeriksa nilai keluar dari alat Javadoc sekarang akan gagal. JDK8 Javadoc mungkin juga lebih verbose dalam hal warnings
dibandingkan dengan JDK7 tapi itu bukan cakupannya di sini. Kita bicarakan errors
!
Pertanyaan ini ada untuk mengumpulkan proposal tentang apa yang harus dilakukan. Apa pendekatan terbaik? Haruskah kesalahan ini diperbaiki sekali dan untuk semua dalam file kode sumber? Jika Anda memiliki basis kode yang besar ini mungkin banyak pekerjaan. Apa pilihan lain yang ada?
Anda juga dipersilakan untuk berkomentar dengan cerita-cerita tentang apa yang sekarang gagal yang sebelumnya akan berlalu.
Kisah-kisah horor tentang apa yang sekarang gagal
alat bantu
wsimport
alat adalah penghasil kode untuk menciptakan konsumen layanan web. Itu termasuk dalam JDK. Bahkan jika Anda menggunakan wsimport
alat dari JDK8 itu akan tetap menghasilkan kode sumber yang tidak dapat dikompilasi dengan kompilator javadoc dari JDK8 .
@ tag penulis
Saya membuka file kode sumber berusia 3-4 tahun dan melihat ini:
/**
* My very best class
* @author John <[email protected]>
*/
Ini sekarang gagal karena <karakter. Sebenarnya ini dibenarkan, tapi tidak terlalu pemaaf.
Tabel HTML
Tabel HTML di Javadoc Anda? Pertimbangkan HTML yang valid ini:
/**
*
* <table>
* <tr>
* <td>Col1</td><td>Col2</td><td>Col3</td>
* </tr>
* </table>
*/
Ini sekarang gagal dengan pesan kesalahan no summary or caption for table
. Satu perbaikan cepat adalah melakukan seperti ini:
/**
*
* <table summary="">
* <tr>
* <td>Col1</td><td>Col2</td><td>Col3</td>
* </tr>
* </table>
*/
tetapi mengapa ini harus menjadi stop-the-world error dari alat Javadoc mengalahkan saya ??
Hal-hal yang sekarang gagal karena alasan yang lebih jelas
- Tautan tidak valid, mis
{@link notexist}
- HTML salah format, mis
always returns <code>true<code> if ...
MEMPERBARUI
Tautan:
Baik blog pada subjek oleh Stephen Colebourne .
-Xdoclint
bahkan denganjavac
mengatakannya untuk memeriksa dokumen saat mengkompilasi ...Jawaban:
Untuk saat ini, cara termudah yang saya tahu untuk bekerja di sekitar Java 8 Javadoc yang lebih ketat saat menggunakan Maven adalah menonaktifkannya.
Karena parameter
-Xdoclint:none
hanya ada di Java 8, mendefinisikan parameter ini memecah build untuk Java lainnya. Untuk mencegah hal ini, kita dapat membuat profil yang hanya akan aktif untuk Java 8, memastikan solusi kami berfungsi terlepas dari versi Java.Cukup tambahkan itu ke POM Anda dan Anda siap melakukannya.
Untuk pengguna maven-javadoc-plugin 3.0.0:
Menggantikan
<additionalparam>-Xdoclint:none</additionalparam>
oleh
<doclint>none</doclint>
Terima kasih @banterCZ!
sumber
<activation>
bagian itu. Tapi saya berharap seseorang akan datang dengan alat yang bisa melalui banyak file sumber dan membantu pengembang dalam memperbaiki kesalahan ... daripada hanya mematikan DocLint.<additionalparam>-Xdoclint:none</additionalparam>
oleh<doclint>none</doclint>
Jika Anda menggunakan plugin maven javadoc, Anda dapat menggunakan
failOnError
opsi untuk mencegahnya berhenti jika menemukan kesalahan html:Atau Anda dapat menonaktifkan opsi html ketat sepenuhnya dengan:
Untuk info lebih lanjut .
sumber
-Xdoclint
opsi. Harapannya apakah itu akan diabaikan secara diam-diam jika dijalankan dengan JDK7 Javadoc?Sejak versi 3.0.0 dari maven-javadoc-plugin doclint dikonfigurasi melalui tag XML khusus
sumber
Saya suka solusi @ ThiagoPorciúncula tetapi tidak cukup jauh bagi saya.
Saya biasanya sudah memiliki
additionalparam
set plugin javadoc yang tidak ditimpa oleh profil. Karena itu saya harus:disableDoclint
properti menjadi kosong secara default.disableDoclint
properti menjadi-Xdoclint:none
${disableDoclint} in the
tambahanparamsection of the
maven-javadoc-plugin`.Ini tampaknya bekerja dengan baik meskipun bertele-tele.
Kemudian di bawah saya bisa menggunakan
${disableDoclint}
variabel opsional diadditionalparam
bagian yang sudah saya definisikan.Ini berfungsi di bawah java 8 tetapi tidak menyebabkan kesalahan sintaksis di bawah java 7. Woo hoo!
sumber
Perhatikan bahwa untuk kesalahan
no summary or caption for table
, menggunakan<table summary="">
tidak akan berfungsi lagi. Jika itu situasi Anda, tambahkan<caption>
elemen ke tabel Anda, seperti ini:Semoga ini bisa membantu seseorang di luar sana. Butuh beberapa saat sampai saya mengetahui hal ini.
sumber
<table summary="">
trik masih bekerja pada JDK8. (baru diuji pada jdk1.8.0_201)summary="..."
atribut tidak didukung dengan HTML5 (output default untuk JDK 11 javadoc) lagi. Ini juga didukung di JDK 8.