Maven tidak berfungsi di Java 8 saat tag Javadoc tidak lengkap


312

Karena saya menggunakan Maven, saya dapat membangun dan menginstal di proyek repositori lokal saya yang memiliki tag Javadoc tidak lengkap (misalnya, parameter yang hilang).

Namun, karena saya bermigrasi ke Java 8 (1.8.0-ea-b90) Maven benar-benar ketat tentang kehilangan tag dokumentasi dan menunjukkan kepada saya banyak kesalahan Javadoc terkait dengan masalah Javadoc ketika saya mencoba membangun atau menginstal proyek di mana Javadoc tidak "sempurna". Beberapa proyek yang saya coba kompilasi dan instal di repositori lokal saya adalah proyek pihak ketiga yang tidak saya kendalikan. Jadi solusi untuk memperbaiki semua Javadocs di semua proyek ini tampaknya tidak cocok dalam skenario saya.

Ini adalah sebagian kecil dari output yang saya lihat ketika saya jalankan mvn clean package installdi proyek saya:

[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 9.026s
[INFO] Finished at: Mon Apr 08 21:06:17 CEST 2013
[INFO] Final Memory: 27M/437M
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-javadoc-plugin:2.9:jar (attach-javadocs) on project jpc: MavenReportException: Error while creating archive:
[ERROR] Exit code: 1 - /Users/sergioc/Documents/workspaces/heal/jpc/src/main/java/org/jpc/engine/prolog/PrologDatabase.java:10: error: @param name not found
[ERROR] * @param terms the terms to assert
[ERROR] ^
[ERROR] /Users/sergioc/Documents/workspaces/heal/jpc/src/main/java/org/jpc/engine/prolog/PrologDatabase.java:11: warning: no description for @return
[ERROR] * @return
[ERROR] ^

Plugin Javadoc Maven dikonfigurasi seperti ini di POM saya:

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-javadoc-plugin</artifactId>
    <version>2.9</version>
    <executions>
        <execution>
            <id>attach-javadocs</id>
            <goals>
                <goal>jar</goal>
            </goals>
        </execution>
    </executions>
</plugin>

Seperti yang saya katakan sebelumnya, semuanya bekerja dengan baik jika saya kembali ke Jawa 7. Mungkin ini bug yang terkait dengan Maven yang berjalan di Java 8? Bagaimana saya bisa membuatnya bekerja (yaitu, bisa membangun Javadoc proyek dan menginstal kode di repositori lokal saya) dengan Java 8? Saya telah menguji dengan Maven 3.0.3 dan 3.0.5 di OSX.

MEMPERBARUI:

Jika saya mengubah konfigurasi plugin Javadoc saya dengan <failOnError>false</failOnError>(terima kasih Martin):

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-javadoc-plugin</artifactId>
    <version>2.9</version>
    <executions>
        <execution>
            <id>attach-javadocs</id>
            <goals>
                <goal>jar</goal>
            </goals>
        </execution>
    </executions>
</plugin>

Kemudian proyek diinstal di repositori lokal saya. Namun, JAR Javadoc masih belum dihasilkan.

Sebuah fragmen dari output yang saya lihat di konsol dengan konfigurasi baru ini adalah:

[GALAT] MavenReportException: Kesalahan saat membuat arsip: Keluar kode: 1 - /Users/....java:18: peringatan: no @param ... Baris perintah adalah: / Library / Java / Home / bin / javadoc @options @ paket

Lihat file Javadoc yang dihasilkan di '/ Users / sergioc / Documents / workspaces / heal / minitoolbox / target / apidocs' dir.

di org.apache.maven.plugin.javadoc.AbstractJavadocMojo.executeJavadocCommandLine (AbstractJavadocMojo.java:5043) di org.apache.maven.plugin.javadoc.AbstrakJavadocMojo.executeReport (AbstractJavad0990ga.mugum .javadoc.JavadocJar.execute (JavadocJar.java:181) di org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo (DefaultBuildPluginManager.java:101) di org.apache.maven.lifecycle. : 209) di org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:153) di org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:145) di org.apache. maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:84) di org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:59) di org.apache.maven.lifecycle.internal.LifecycleStarter.singleThreadedBuild (LifecycleStarter.java:183) di org.apache.maven.lifecycle.internal.LifecycleStarter.execute (Lifecycle) di org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:320) di org.apache.maven.DefaultMaven.execute (DefaultMaven.java:156) di org.apache.maven.cli.MavenCli.execute (MavenCli.java : 537) di org.apache.maven.cli.MavenCli.doMain (MavenCli.java:196) di org.apache.maven.cli.MavenCli.main (MavenCli.java:141) di sun.reflect.NativeMethodAccessorImpl.invoke0 ( Metode Asli) di sun.reflect.NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl.java:57) di sun.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.java:43 di folder java.lebih.panggil (Method.java:491) di org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced (Launcher.java .:90) di org.codehaus.plexus.classworlds.launcher.Launcher.launch (Launcher.java .:30) di org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode (Launcher.java:409) di org.codehaus.plexus.classworlds.launcher.Launcher.main (Launcher.java:352)

Adakah solusi tentang cara membangun sumber, menginstal proyek, dan menghasilkan JAR Javadoc dalam satu langkah karena bekerja dengan Java 7?


Hai @ 75inchpianist, saya telah memperbarui pertanyaan, pada kenyataannya mereka adalah kesalahan (meskipun cukup mengejutkan baris terakhir dari kesalahan mengacu pada peringatan, seperti yang Anda lihat di output yang dihasilkan). Proyek ini tidak diinstal di repositori lokal saya, sehingga tidak dianggap sebagai peringatan sederhana :(
Sergio

Untuk GoogleJuice: Saya mendapat "kesalahan: penggunaan yang buruk dari '>'" karena saya memiliki panah besar di komentar JavaDoc
Drew Stephens

1
Mungkin ini akan berguna bagi seseorang: Anda dapat dengan mudah menemukan semua tag yang tidak lengkap ini di IntelliJ dengan menjalankan pemeriksaan Ctrl + Alt + Shift + i "Deklarasi memiliki masalah JavaDoc"
Sergey Ponomarev

1
Ini bukan pakar, itu adalah program javadoc yang mendapat lebih ketat di Jawa 8.
Thorbjørn Ravn Andersen

Jawaban:


388

Solusi terbaik adalah memperbaiki kesalahan javadoc. Jika karena alasan tertentu tidak mungkin (yaitu: kode sumber yang dibuat secara otomatis) maka Anda dapat menonaktifkan pemeriksaan ini.

DocLint adalah fitur baru di Java 8 , yang diringkas sebagai:

Menyediakan sarana untuk mendeteksi kesalahan dalam komentar Javadoc di awal siklus pengembangan dan dengan cara yang mudah ditautkan kembali ke kode sumber.

Ini diaktifkan secara default, dan akan menjalankan banyak pemeriksaan sebelum membuat Javadocs. Anda perlu mematikan ini untuk Java 8 seperti yang ditentukan dalam utas ini . Anda harus menambahkan ini ke konfigurasi pakar:

<profiles>
  <profile>
    <id>java8-doclint-disabled</id>
    <activation>
      <jdk>[1.8,)</jdk>
    </activation>
    <properties>
      <javadoc.opts>-Xdoclint:none</javadoc.opts>
    </properties>
  </profile>
</profiles>
<build>
  <plugins>
    <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-javadoc-plugin</artifactId>
        <version>2.9</version>
        <executions>
            <execution>
                <id>attach-javadocs</id>
                <goals>
                    <goal>jar</goal>
                </goals>
                <configuration>
                    <additionalparam>${javadoc.opts}</additionalparam>
                </configuration>
            </execution>
        </executions>
    </plugin>
    <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-site-plugin</artifactId>
        <version>3.3</version>
        <configuration>
          <reportPlugins>
            <plugin>
              <groupId>org.apache.maven.plugins</groupId>
              <artifactId>maven-javadoc-plugin</artifactId>
              <configuration>
                <additionalparam>${javadoc.opts}</additionalparam>
              </configuration>
            </plugin>
          </reportPlugins>
        </configuration>
      </plugin>
   </plugins>
</build>

Untuk maven-javadoc-plugin 3.0.0+: Ganti

<additionalparam>-Xdoclint:none</additionalparam>

dengan

<doclint>none</doclint>

18
Apakah ada cara untuk membuat ini berfungsi dengan JDK 8 serta JDK 7? Gagal pada JDK 7 karena javadoctidak tahu opsi ini.
Feuermurmel

8
Sementara ini menjawab pertanyaan yang diajukan di sini, saya ingin menyarankan pengunjung masa depan untuk memeriksa jawaban peterh pertama: stackoverflow.com/a/34809831/1180785 (kebanyakan orang yang mengenai masalah ini hanya akan memiliki beberapa tempat untuk diperbaiki, jadi lebih baik untuk memperbaikinya daripada menonaktifkan cek!)
Dave

8
Untuk maven-javadoc-plugin, gunakan <doclint>none</doclint>. Lihat maven.apache.org/plugins/maven-javadoc-plugin/…
coolersport

11
Juga sejak maven-javadoc-plugin 3.0.0, <additionalparam/>digantikan oleh <additionalOptions/>. Lihat issues.apache.org/jira/browse/MJAVADOC-475
fdelsert

1
Itu benar. Saya ingin memberi tahu bahwa selama migrasi dari maven 2 ke maven 3, jangan lupa bahwa tag plugin ini tidak boleh dimasukkan ke tag pelaporan tetapi langsung ke pluginManagement (pom.xml)
dimeros

97

Pendekatan termudah untuk membuat semuanya berfungsi dengan baik java 8 dan java 7 adalah dengan menggunakan profil di build:

<profiles>
  <profile>
    <id>doclint-java8-disable</id>
    <activation>
      <jdk>[1.8,)</jdk>
    </activation>

    <build>
      <plugins>
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-javadoc-plugin</artifactId>
          <configuration>
            <additionalparam>-Xdoclint:none</additionalparam>
          </configuration>
        </plugin>
      </plugins>
    </build>
  </profile>
</profiles>

1
Solusi terbaik mungkin adalah Hibrida antara solusi Anda dan Zapp yang disediakan di bawah ini. Jika Anda membiarkannya seperti ini, perintah mvn site: site masih akan mogok. Anda harus membuat profil yang diaktifkan oleh 1,8 jdk yang menetapkan properti global.
Max Nad

64

Berikut adalah cara paling ringkas yang saya perhatikan untuk mengabaikan peringatan doclint terlepas dari versi java yang digunakan. Tidak perlu menduplikasi konfigurasi plugin di beberapa profil dengan sedikit modifikasi.

<profiles>
  <profile>
    <id>doclint-java8-disable</id>
    <activation>
      <jdk>[1.8,)</jdk>
    </activation>
    <properties>
      <javadoc.opts>-Xdoclint:none</javadoc.opts>
    </properties>
  </profile>
</profiles>

<build>
  <plugins>
    <plugin>
      <groupId>org.apache.maven.plugins</groupId>
      <artifactId>maven-javadoc-plugin</artifactId>
      <version>2.9.1</version>
      <executions>
        <execution>
          <id>attach-javadocs</id> <!-- The actual id should be apparent from maven output -->
          <configuration>
            <additionalparam>${javadoc.opts}</additionalparam>
          </configuration>
        </execution>
      </executions>
    </plugin>
    ...
  </plugins>
</build>

Diuji pada oracle / open jdk 6, 7, 8 dan 11.


1
Dan di mana harus diletakkan secara khusus?
clearlight

1
@clearlight, keduanya builddan profilesmerupakan blok tingkat atas di pakar pom.xml. maven.apache.org/pom.html#Build .
Oliver Gondža

Terima kasih. Saya akhirnya menemukan itu, tapi ada baiknya dikaitkan dengan jawaban ini.
clearlight

38

Tambahkan ke bagian properti global di file pom:

<project>
    ...
    <properties>
        <additionalparam>-Xdoclint:none</additionalparam>
    </properties>

Solusi umum yang disediakan di sini di jawaban lain (menambahkan properti di bagian plugin) tidak berfungsi karena suatu alasan. Hanya dengan mengaturnya secara global saya dapat membangun toples javadoc dengan sukses.


1
ini adalah satu-satunya solusi yang berhasil untuk saya. Saya membaca jawabannya di sini juga: blog.joda.org/2014/02/turning-off-doclint-in-jdk-8-javadoc.html
acvcu

37

Solusi terpendek yang akan bekerja dengan semua versi Java:

<profiles>
    <profile>
        <id>disable-java8-doclint</id>
        <activation>
            <jdk>[1.8,)</jdk>
        </activation>
        <properties>
            <additionalparam>-Xdoclint:none</additionalparam>
        </properties>
    </profile>
</profiles>

Cukup tambahkan itu ke POM Anda dan Anda siap melakukannya.

Ini pada dasarnya adalah jawaban @ ankon plus jawaban @ zapp .


Untuk pengguna maven-javadoc-plugin 3.0.0:

Menggantikan

<additionalparam>-Xdoclint:none</additionalparam>

oleh

<doclint>none</doclint>


Itu solusi terbaik untukku. Ini berfungsi untuk bot java 7 dan java 8. Tapi cara kerjanya adalah semacam sihir:. Bagaimana cara parameter "additionalParam" ini ditambahkan ke plugin javadoc (dan tidak ke yang lain)
pdem

1
@ pdem Parameter tambahan ditambahkan ke Maven, bukan ke plugin Javadoc. Solusi ini berfungsi baik Anda menggunakan plugin secara eksplisit atau tidak.
Fred Porciúncula

2
Sejak maven-javadoc-plugin 3.0.0, Anda harus menambahkan <additionalJOption>-Xdoclint:none</additionalJOption>atau <doclint>none</doclint>properti ke Anda<properties>
Sergi

Ya, Menambahkan JDK 8 terkait profil & pengaturan <doclint> tidak ada </doclint> menyelesaikan masalah. Ini menghasilkan jar javadoc sama seperti yang dihasilkan di JDK 7. Terima kasih.
Saurabhcdt

1
Bisakah Anda mengklarifikasi: dengan maven-javadoc-plugin 3.0.0 ke atas, jika saya cukup menentukan <doclint>none</doclint>(tanpa aktivasi berbasis versi JDK), apakah masih gagal pada JDK kurang dari 1,8, atau apakah maven-javadoc-plugin secara otomatis mendeteksi apakah itudoclint option didukung oleh versi saat Jawa?
Garret Wilson

31

Saya tidak berpikir mematikan DocLint adalah solusi yang bagus, setidaknya tidak untuk jangka panjang. Adalah baik bahwa Javadoc telah menjadi sedikit lebih ketat sehingga cara yang tepat untuk memperbaiki masalah build adalah untuk memperbaiki masalah yang mendasarinya . Ya, pada akhirnya Anda harus memperbaiki file kode sumber tersebut.

Berikut adalah hal-hal yang perlu diwaspadai yang sebelumnya bisa Anda hindari:

  • HTML salah bentuk (misalnya tanda akhir yang hilang, tanda kurung tidak hilang, dll.)
  • {@link }S tidak valid (Hal yang sama berlaku untuk tag serupa seperti @see)
  • @authorNilai tidak valid . Ini dulunya diterima: @author John <john.doe@mine.com>tetapi tidak lagi karena tanda kurung yang tidak diloloskan.
  • Tabel HTML di Javadoc sekarang membutuhkan ringkasan atau keterangan. Lihat pertanyaan ini untuk penjelasan.

Anda hanya perlu memperbaiki file kode sumber Anda dan terus membangun Javadoc Anda sampai dapat membangun tanpa kegagalan. Ya rumit, tetapi secara pribadi saya suka ketika saya telah membawa proyek saya ke tingkat DocLint karena itu berarti saya bisa lebih percaya diri bahwa Javadoc yang saya hasilkan sebenarnya adalah apa yang saya inginkan.

Tentu saja ada masalah jika Anda menghasilkan Javadoc pada beberapa kode sumber yang belum Anda buat sendiri, misalnya karena berasal dari beberapa pembuat kode, misalnya wsimport . Aneh bahwa Oracle tidak menyiapkan alat sendiri untuk kepatuhan JDK8 sebelum benar-benar merilis JDK8. Tampaknya tidak akan diperbaiki hingga Java 9 . Hanya dalam kasus khusus ini saya sarankan untuk mematikan DocLint seperti yang didokumentasikan di tempat lain di halaman ini.


1
Sepenuhnya setuju di sini, yang mengatakan, untuk kode yang dihasilkan Anda hanya dapat memberitahu plugin untuk tidak memproses kode dalam paket yang diberikan dengan menambahkan bagian excludePackageNames di bagian konfigurasi plugin javadoc. lihat maven.apache.org/plugins/maven-javadoc-plugin/examples/…
Newtopian

@Newtopian. Poin yang bagus. Namun dalam kasus saya, saya benar-benar membutuhkan kode yang dihasilkan dari wsimportuntuk menjadi bagian dari Javadoc.
peterh

Itu SO jauh lebih mudah diucapkan daripada dilakukan karena banyak dari kita yang mengalami masalah ini sedang mencoba untuk membangun kode sumber terbuka yang tidak dikenal yang memiliki ketergantungan Maven di suatu tempat dan kami tidak tahu cara kerjanya, jadi tidak ada cara mudah untuk mengatasi penyebab yang mendasarinya. Ada terlalu banyak miopia tentang konteksnya. Orang-orang perlu menggeneralisasi ruang lingkup jawaban lebih banyak dan memberikan lebih spesifik tentang bagaimana melakukan perbaikan.
clearlight

30

Override maven-javadoc-pluginkonfigurasi saja, tidak memperbaiki masalah dengan mvn site(misalnya digunakan selama tahap release). Inilah yang harus saya lakukan:

<profile>
  <id>doclint-java8-disable</id>
  <activation>
    <jdk>[1.8,)</jdk>
  </activation>
  <build>
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-javadoc-plugin</artifactId>
        <configuration>
          <additionalparam>-Xdoclint:none</additionalparam>
        </configuration>
      </plugin>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-site-plugin</artifactId>
        <version>3.3</version>
        <configuration>
          <reportPlugins>
            <plugin>
              <groupId>org.apache.maven.plugins</groupId>
              <artifactId>maven-javadoc-plugin</artifactId>
              <configuration>
                <additionalparam>-Xdoclint:none</additionalparam>
              </configuration>
            </plugin>
          </reportPlugins>
        </configuration>
      </plugin>
    </plugins>
  </build>
</profile>

3
Ini adalah poin penting karena kurangnya pengaturan ini dalam aktivasi situs-plugin akan menyebabkan rilis: berkinerja gagal saat rilis: persiapan telah bekerja dengan baik. Ini bisa menjadi masalah yang sangat menjengkelkan untuk ditemukan dan diperbaiki.
Peter N. Steinmetz

Catatan, bahwa konfigurasi maven-javadoc-pluginmelalui <reportPlugins>bagian dari maven-site-pluginini tidak dianjurkan untuk versi terbaru dari Maven 3.
Martin Holler

@ MartinHöller Jadi bagaimana mengatasi kesalahan saat rilis: melakukan tahapan yang terkait dengan mavene-javadoc-plugin: 3.0.1 dengan cara yang benar?
Vitalii Diravka

@VitaliiDiravka Tergantung pada kesalahan ... Silakan ajukan pertanyaan terpisah untuk ini.
Martin Höller

22

Anda dapat mencoba mengatur failOnErrorproperti (lihat dokumentasi plugin ) untuk false:

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-javadoc-plugin</artifactId>
    <version>2.9</version>
    <executions>
        <execution>
            <id>attach-javadocs</id>
            <goals>
                <goal>jar</goal>
            </goals>
            <configuration>
              <failOnError>false</failOnError>
            </configuration>
        </execution>
    </executions>
</plugin>

Seperti yang Anda lihat dari dokumen, nilai defaultnya adalah true.


Terima kasih atas idenya @Martin. Dengan properti itu setidaknya saya dapat membangun dan menginstal proyek lagi, namun saya masih kehilangan toples java java (saya perlu untuk menyebarkan ke pusat Maven). Saya memperbarui pertanyaan saya dengan detail percobaan.
Sergio

Ini adalah jawaban yang paling memadai bagi saya. Saya hanya ingin menguji pembangunan selama pengembangan yang sedang berlangsung ketika javadocs masih belum lengkap.
ZachSand

17

Karena itu tergantung pada versi JRE Anda yang digunakan untuk menjalankan perintah maven Anda tidak ingin menonaktifkan DocLintper default di pom.xml Anda

Oleh karena itu, dari baris perintah Anda dapat menggunakan sakelar -Dadditionalparam=-Xdoclint:none.

Contoh: mvn clean install -Dadditionalparam=-Xdoclint:none


3
Ini sangat berguna karena Anda dapat menggunakannya Jenkins juga. Set 'Global MAVEN_OPTS' (di bawah 'Configure System') ke -Dadditionalparam=-Xdoclint:nonedan semua build Anda akan bekerja dengan Java 8.
Wilfred Hughes

mvn org.apache.maven.plugins:maven-javadoc-plugin:3.1.0:jar -DadditionalJOption=-Xdoclint:none- itu berhasil untuk saya
Roman Khomyshynets

10

Nama properti konfigurasi telah diubah dalam versi terbaru dari maven-javadoc-plugin yang 3.0.0.

Karenanya <additionalparam> tidak akan berfungsi. Jadi kita harus memodifikasinya seperti di bawah ini.

   <plugin>
      <groupId>org.apache.maven.plugins</groupId>
      <artifactId>maven-javadoc-plugin</artifactId>
      <version>3.0.0</version>
      <configuration>
         <doclint>none</doclint>
      </configuration>
  </plugin>

Lihat doclintdokumentasi di sini: maven.apache.org/plugins/maven-javadoc-plugin/…
Peter W

Menyelesaikannya untuk saya membangun OpenGrok dari sumber github di Feb'19. Harus menyebutkan tambalan Anda masuk ke pom.xmldalam direktori src / build proyek. Dalam kasus saya, yang harus saya lakukan adalah mencari maven-javadoc-plugindan kemudian pergi ke <configuration></configuration>blok yang sudah ada dan menambahkan <doclint>none</doclint>. Semudah semua ini diketahui, konteksnya di sini adalah saya mencoba untuk memperbaiki bug yang berbeda di OpenGrok dan belum pernah menggunakan Maven sebelumnya dan tidak ingin harus melihat kembali ke sub proyek lain hanya untuk mencari tahu cara menerapkan perbaikan cepat.
clearlight

4

Saya ingin menambahkan beberapa wawasan ke dalam jawaban lain

Dalam kasus saya

-Xdoclint: tidak ada

Tidak bekerja

Mari kita mulai dengan itu, dalam proyek saya, saya tidak benar-benar membutuhkan javadoc sama sekali. Hanya beberapa plugin yang diperlukan yang memiliki dependensi waktu build untuknya.

Jadi, cara paling sederhana untuk menyelesaikan masalah saya adalah:

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-javadoc-plugin</artifactId>
    <configuration>
        <skip>true</skip>
    </configuration>
</plugin>

4

Pada maven-javadoc-plugin 3.0.0 Anda seharusnya telah menggunakan tambahanJOption untuk mengatur opsi Javadoc tambahan, jadi jika Anda ingin Javadoc untuk menonaktifkan doclint, Anda harus menambahkan properti berikut.

<properties>
    ...
    <additionalJOption>-Xdoclint:none</additionalJOption>
    ...
<properties>

Anda juga harus menyebutkan versi maven-javadoc-plugin 3.0.0 atau lebih tinggi.

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-javadoc-plugin</artifactId>
    <version>3.0.0</version>    
</plugin>

3

Jadi, hemat diri Anda beberapa jam yang tidak saya lakukan dan coba ini jika tampaknya tidak berhasil:

 <additionalJOption>-Xdoclint:none</additionalJOption>

Tag diubah untuk versi yang lebih baru.



Kadang-kadang -Xdoclintitu sendiri tidak cukup, tetapi argumen tambahan diperlukan. Versi yang lebih baru dari maven-javadoc-pluginmenyediakan additionalJOptionsuntuk itu, yang lebih tua tidak. Solusinya adalah: <additionalJOption>"-Xdoclint:none" "--allow-script-in-comments"</additionalJOption>Kutipan itu penting, kalau tidak plugin menambahkannya dan mengasumsikan hanya satu arg bukan dua, menghasilkan wrong argskesalahan.
Thorsten Schöning

Yang pertama hanya bekerja pada Windows, di Linux: javadoc: error - Illegal package name: ""-Xdoclint:none" "--allow-script-in-comments""Kutipan luar ditambahkan oleh pernyataan logging dan tidak ada pada shell. Saya kira masalahnya adalah bahwa pada Windows javadocdijalankan oleh cmd.exe, yang mem-parsing satu string besar sebagai baris perintah dan membagi additionalJOptionsebagaimana dimaksud. Di Linux, argumen dikirimkan secara individual ke proses secara langsung dan additionalJOptionditeruskan sebagai satu argumen, yang mengarah ke kesalahan.
Thorsten Schöning

Menurutnya Process Monitor, cmd.exetidak digunakan. Java kemungkinan besar hanya membangun satu baris perintah besar dan meneruskannya CreateProcess, sehingga bisa diuraikan oleh Windows sebagaimana dimaksud: Memisahkan argumen pada spasi sambil menghormati tanda kutip.
Thorsten Schöning

3

Ditambahkan di bawah

JAVA_TOOL_OPTIONS=-DadditionalJOption=-Xdoclint:none

Ke dalam pekerjaan Jenkins:

Konfigurasi> Membangun Lingkungan> Menyuntikkan variabel lingkungan ke proses pembuatan> Properti Konten

Memecahkan masalah saya dalam membangun kode melalui Jenkins Maven :-)


Ini berfungsi untuk maven-javadoc-plugin 2.4 tetapi mulai pada 2.5 (dan sepanjang 3.0.0), ini menyebabkan kesalahan: "Keluar kode: 1 - javadoc: error - flag tidak valid: -Xdoclint: none". Jadi solusinya rapuh.
Akom

1
Saat menggunakan ini dengan mvn release:performsintaks perlu mvn release:perform -Darguments="-Dmaven.javadoc.skip=true".
PatS

2

Saya tidak yakin apakah ini akan membantu, tetapi bahkan saya menghadapi masalah yang sama baru-baru ini dengan versi oozie-4.2.0 . Setelah membaca jawaban di atas saya baru saja menambahkan opsi pakar melalui baris perintah dan itu bekerja untuk saya. Jadi, bagikan saja di sini.

Saya menggunakan java 1.8.0_77 , belum mencoba dengan java 1.7

bin / mkdistro.sh -DskipTests -Dmaven.javadoc.opts = '- Xdoclint: -html'


1

Untuk mengabaikan hilang @paramdan @returntag, itu cukup untuk menonaktifkan missing kelompok doclint . Dengan cara ini, javadoc masih akan diperiksa untuk masalah level dan sintaksis yang lebih tinggi:

    <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-javadoc-plugin</artifactId>
        <version>3.0.0</version>
        <configuration>
            <doclint>all,-missing</doclint>
        </configuration>
    </plugin>

Perhatikan bahwa ini untuk plugin versi 3.0 atau lebih baru.


0

Aku agak terlambat ke pesta, tapi aku terpaksa mencari solusinya juga, berakhir di sini, dan kemudian menemukannya.

Inilah yang bekerja untuk saya: -

export JAVA_TOOL_OPTIONS=-DadditionalJOption=-Xdoclint:none

Dan kemudian mulai membangun Maven Anda, membangun distribusi Linux dll. Hal yang menyenangkan tentang hal itu bahwa itu tidak memerlukan modifikasi file konfigurasi Maven - Saya tidak bisa melakukan itu karena tujuan saya adalah untuk membangun kembali banyak paket Centos rpm, jadi harus masuk sangat dalam.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.