Javadoc etiketleri eksik olduğunda Maven Java 8'de çalışmıyor


312

Maven'i kullandığımdan beri, Javadoc etiketleri eksik olan yerel depo projelerimi (örneğin, eksik bir parametre) oluşturup kurabildim.

Ancak, Java 8'e (1.8.0-ea-b90) geçiş yaptığım için Maven, eksik belge etiketleri konusunda kesinlikle katı ve Javadoc'un olmadığı bir proje oluşturmaya veya yüklemeye çalıştığımda Javadoc sorunları ile ilgili birçok Javadoc hatası göster "mükemmel". Yerel veri havuzumda derlemeye ve kurmaya çalıştığım bazı projeler, kontrol sahibi olmadığım üçüncü taraf projeler. Bu yüzden, tüm bu projelerde tüm Javadoc'ları düzeltmenin çözümü benim senaryomda mümkün görünmüyor.

Bu, projemde yürüttüğümde gördüğüm çıktının küçük bir kısmı mvn clean package install:

[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] ^

Javadoc Maven eklentisi POM'umda şu şekilde yapılandırıldı:

<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>

Daha önce de söylediğim gibi, Java 7'ye geri dönersem her şey yolunda gidiyordur. Belki bu Maven'in Java 8'de çalışmasıyla ilgili bir hata mıdır? Java 8 ile nasıl çalıştırabilirim (yani, projenin Javadoc'unu oluşturabilir ve kodunu yerel depomda kurabilirim)? OSX'te Maven 3.0.3 ve 3.0.5 ile test yaptım.

GÜNCELLEME:

Javadoc eklenti yapılandırmamı <failOnError>false</failOnError>(teşekkürler Martin) ile değiştirirsem:

<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>

Sonra proje yerel depoma yüklenir. Ancak, Javadoc JAR hala oluşturulmaz.

Bu yeni yapılandırmayla birlikte konsolda gördüğüm çıktının bir parçası:

[ERROR] MavenReportException: Arşiv oluşturulurken hata: Çıkış kodu: 1 - /Users/....java:18: warning: no @param ... Komut satırı şuydu: / Library / Java / Home / bin / javadoc @options @packages

'/ Users / sergioc / Documents / workspace / heal / minitoolbox / target / apidocs' dizinindeki oluşturulan Javadoc dosyalarına bakın.

at org.apache.maven.plugin.javadoc.AbstractJavadocMojo.executeJavadocCommandLine (Soyut org.apache.maven.joec.exec.exec.exec.exec.Exec.Exec.Exec.Exec.Exec.Exec.Exec.Exec.Exec.Exec.Exec.Exec.Exec.Exec.Exec.Exec.Exec.Exec.Exec.Exec.Exec.Exec.Exec.Exec.Exec.Exec.Exec.Exec.Exec.Exec.Exec.Exec.Exec.Exec.Exec.Exec.Exec.Exec.Exec.Exec.Exec.Execex. : 209) org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:153) org.apache şirketinde org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:153). maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:84) org.apache.maven.lifecycle.internal.LifecycleModuleBuilder'da.org.apache.maven.lifecycle.internal.LifecycleStarter.singleThreadedBuild (LifecycleStarter.java:183) konumundaki org.apache.maven.lifecycle.internal.LifecycleStarter.singleThreadedBuild (LifecycleStarter.java:183) 'da (LifecycleStarter.java:183) (LifecycleStarter.jec:1) org.apache.maven.e.MavenCli.execute (MavenCli.java şirketinde org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:320) : 537) sun.reflect.NativeMethodAccessorImpl.invoke0 şirketinde org.apache.maven.cli.MavenCli.doMain (MavenCli.java:196) 'da (MavenCli.java:141) Native Method) sun.reflect.NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl.java:57) 'de sun.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.java.43.fl.hoavalang43.java.43 adresinde).org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced (Launcher.java:290) org.codehaus.plexus.classworlds.launcher.Launcher.launch'da (Launcher.java:230) çağırın (Method.java:491) org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode'da (Launcher.java:409) org.codehaus.plexus.classworlds.launcher.Launcher.main'de (Launcher.java:352)

Kaynakların nasıl oluşturulacağı, projenin nasıl kurulacağı ve Java 7 ile çalışırken bir adımda Javadoc JAR'ın nasıl oluşturulacağı hakkında herhangi bir geçici çözüm var mı?


Merhaba @ 75inchpianist, ben aslında, onlar hatalar güncelledi (şaşırtıcı derecede yeterli olmasına rağmen hata son satırı oluşturulan çıktıda görebileceğiniz gibi, bir uyarı anlamına gelir). Proje yerel depomda kurulu değil, bu yüzden basit bir uyarı olarak kabul edilmiyor :(
Sergio

GoogleJuice için: JavaDoc yorumunda büyük bir okum olduğu için "hata: '>'" kötü kullanımı hatasını aldım
Drew Stephens

1
Belki birisi için yararlı olacaktır: Ctrl + Alt + ÜstKrktr + i "Bildirimin JavaDoc sorunları var" komutunu çalıştırarak IntelliJ'deki tüm bu eksik etiketleri kolayca bulabilirsiniz.
Sergey Ponomarev

1
Bu maven değil, Java 8'de çok daha sıkı olan javadoc programı.
Thorbjørn Ravn Andersen

Yanıtlar:


388

En iyi çözüm javadoc hatalarını düzeltmek olacaktır. Herhangi bir nedenle bu mümkün değilse (yani: otomatik oluşturulan kaynak kodu), bu kontrolü devre dışı bırakabilirsiniz.

DocLint, Java 8'de şu şekilde özetlenen yeni bir özelliktir :

Geliştirme döngüsünün başlarında ve kaynak koduna kolayca bağlanabilecek şekilde Javadoc yorumlarındaki hataları tespit etmek için bir araç sağlayın.

Bu varsayılan olarak etkindir ve Javadoc oluşturmadan önce bir sürü kontrol gerçekleştirir. Bu iş parçacığında belirtildiği gibi Java 8 için bunu kapatmanız gerekir . Bunu maven yapılandırmanıza eklemeniz gerekecek:

<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>

Maaven-javadoc-plugin 3.0.0+ için: Değiştirin

<additionalparam>-Xdoclint:none</additionalparam>

ile

<doclint>none</doclint>

18
Bu JDK 8 ve JDK 7 ile çalışmanın bir yolu var mı ? JDK 7'de başarısız oluyor çünkü javadocbu seçeneği bilmiyor.
Feuermurmel

8
Bu, burada sorulan soruya cevap verirken, gelecekteki ziyaretçilere önce peterh'in cevabını kontrol etmelerini tavsiye etmek isterim: stackoverflow.com/a/34809831/1180785 (bu sorunu isabet eden çoğu insanın düzeltmesi gereken sadece birkaç yer var, bu yüzden daha iyi bunları devre dışı bırakmaktan nasıl düzeltmek için!)
Dave

8
Maaven-javadoc-eklentisi için kullanın <doclint>none</doclint>. Bkz. Maven.apache.org/plugins/maven-javadoc-plugin/…
coolersport

11
Ayrıca maven-javadoc-plugin 3.0.0 olduğundan <additionalparam/>, yerini aldı <additionalOptions/>. Bkz issues.apache.org/jira/browse/MJAVADOC-475
fdelsert

1
Bu doğru. Bu eklenti etiketi etiketi raporlama ancak doğrudan pluginManagement (pom.xml) dahil edilmemesi gerektiğini unutmayın, 3 maven için maven 2 geçiş sırasında bildirmek istiyorum
dimeros

97

Hem java 8 hem de java 7 ile işlerin çalışmasını sağlamak için en kolay yaklaşım yapıda bir profil kullanmaktır:

<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
En iyi çözüm muhtemelen çözümünüz ile aşağıda verilen Zapp tarafından sağlanan bir Hibrit olacaktır. Bu şekilde bırakırsanız, mvn site: site komutu yine de kilitleniyor olacaktır. Genel özelliği ayarlayan 1.8 jdk tarafından etkinleştirilen bir profil oluşturmalısınız.
Max Nad

64

Kullanılan java sürümü ne olursa olsun doclint uyarılarını görmezden gelmenin en kısa yolu. Eklenti yapılandırmasını, küçük değişikliklerle birden fazla profilde çoğaltmaya gerek yoktur.

<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>

Oracle / Open JDK 6, 7, 8 ve 11'de test edildi.


1
Ve bu özellikle nereye konmalı?
clearlight

1
@clearlight, hem buildve profilesmaven üst düzey bloklardır pom.xml. maven.apache.org/pom.html#Build .
Oliver Gondža

Teşekkürler. Sonunda bunu keşfettim, ancak bunun bu cevapla ilişkili olması iyi.
clearlight

38

Pom dosyasındaki global özellikler bölümüne ekleyin:

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

Diğer yanıtlarda (bu özelliği eklentiler bölümüne eklemek) sağlanan ortak çözüm bir nedenden dolayı işe yaramadı. Sadece küresel olarak kurarak javadoc kavanozunu başarılı bir şekilde inşa edebilirim.


1
benim için işe yarayan tek çözüm bu. Cevabı burada da okudum: blog.joda.org/2014/02/turning-off-doclint-in-jdk-8-javadoc.html
acvcu

37

Herhangi bir Java sürümü ile çalışacak en kısa çözüm:

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

Bunu POM'nize eklemeniz yeterlidir.

Bu temelde @ ankon'un cevabı artı @ zapp'ın cevabı .


Maaven-javadoc-plugin 3.0.0 kullanıcıları için:

değiştirmek

<additionalparam>-Xdoclint:none</additionalparam>

tarafından

<doclint>none</doclint>


Benim için en iyi çözüm. Java 7 ve java 8 botları için çalışır. Ama çalışma şekli bir tür sihirdir:. Bu "
extraParam

1
@pdem Ek parametre Javadoc eklentisine değil Maven'e eklenir. Bu çözüm, eklentiyi açıkça kullanıyor olsanız da kullanmasanız da çalışır.
Fred Porciúncula

2
Maven-javadoc-plugin 3.0.0 beri, sizin eklemek <additionalJOption>-Xdoclint:none</additionalJOption>veya <doclint>none</doclint>mülkiyet gerekir<properties>
Sergi

Evet, JDK 8 ile ilgili profil eklemek ve <doclint> hiçbiri </doclint> ayarı sorunu çözer. JDK 7'de olduğu gibi javadoc kavanoz üretir.
Saurabhcdt

1
Açıklığa kavuşturabilir misiniz: maven-javadoc-plugin 3.0.0 ve üstü ile, basitçe <doclint>none</doclint>(JDK sürüm tabanlı aktivasyon olmadan) belirtirseniz , hala 1,8'den az JDK'da başarısız olur mu yoksa maven-javadoc-plugin otomatik olarak doclintseçenek Java geçerli sürümünde tarafından desteklenmektedir?
Garret Wilson

31

DocLint'i kapatmanın en azından uzun vadede iyi bir çözüm olduğunu düşünmüyorum. Javadoc'un biraz daha sıkı hale gelmesi iyidir, bu yüzden derleme problemini düzeltmenin doğru yolu altta yatan problemi düzeltmektir . Evet, sonuçta bu kaynak kodu dosyalarını düzeltmeniz gerekecek.

Daha önce kurtulabileceğiniz şeyler şunlardır:

  • Hatalı biçimlendirilmiş HTML (örneğin, eksik bir bitiş etiketi, kaçan köşeli parantezler vb.)
  • Geçersiz {@link }s. (aynı etiket,@see )
  • Geçersiz @authordeğerler. Bu eskiden kabul edilirdi:@author John <john.doe@mine.com> ama kaçış köşeli parantezler yüzünden artık öyle değil.
  • Javadoc'taki HTML tabloları artık bir özet veya resim yazısı gerektiriyor. Açıklama için bu soruya bakın .

Sadece kaynak kodu dosyalarınızı düzeltmek ve başarısız olmadan inşa edene kadar Javadoc'unuzu oluşturmaya devam etmeniz gerekir. Hantal ama evet, kişisel olarak projelerimi DocLint seviyesine getirdiğimde hoşuma gidiyor çünkü ürettiğim Javadoc'un aslında istediğim şey olduğundan daha emin olabileceğim anlamına geliyor.

Elbette, kendi üretmediğiniz bazı kaynak kodlarında Javadoc oluşturuyorsanız, örneğin wsimport gibi bazı kod üreticilerinden geldiği için sorun var . Oracle'ın JDK8'i gerçekten yayınlamadan önce kendi araçlarını JDK8 uyumluluğu için hazırlamadığı garip. Java 9'a kadar düzeltilmeyecek gibi görünüyor . Sadece bu özel durumda DocLint'i bu sayfanın başka bir yerinde belgelendiği şekilde kapatmanızı öneririm.


1
Oluşturulan kod için eklenti, javadoc eklentisinin yapılandırma bölümüne bir excludePackageNames bölümü ekleyerek belirli bir paketteki kodu işlememesini söyleyebilir. bkz. maven.apache.org/plugins/maven-javadoc-plugin/examples/…
Newtopian

@Newtopian. İyi bir nokta. Ancak benim durumumda aslında wsimportJavadoc parçası olmak için oluşturulan kodu gerekiyordu .
peterh

Bu sorunların birçoğu bir yerde Maven bağımlılığı olan yabancı bir açık kaynak kodu oluşturmaya çalıştığımız için söylenenden çok daha kolay ve hepsinin nasıl çalıştığı hakkında hiçbir fikrimiz yok, bu nedenle altta yatan nedenleri ele almanın kolay bir yolu yok. Bağlam hakkında çok fazla miyopi var. İnsanların cevapların kapsamını daha genelleştirmesi ve düzeltmelerin nasıl yapılacağı hakkında daha ayrıntılı bilgi vermesi gerekir.
clearlight

30

maven-javadoc-pluginYalnızca yapılandırmayı geçersiz kılmak , sorunu çözmez mvn site(örn. Çıkış aşamasında kullanılır). İşte yapmam gerekenler:

<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
Bu, site eklentisi etkinleştirmesinde bu ayarın bulunmamasının serbest bırakılmasına neden olacağı için önemli bir noktadır: serbest bırakırken performans başarısız olur: hazırlama işlemi iyi çalıştı. Bulmak ve düzeltmek çok can sıkıcı bir sorun olabilir.
Peter N. Steinmetz

Not konfigürasyonu olduğu maven-javadoc-pluginaracılığı <reportPlugins>bölümünde maven-site-pluginolduğu önerilmez Maven 3. en son sürümlerine ilişkin
Martin Höller

@ MartinHöller Peki sürümdeki hataları nasıl çözebilirim: mavene-javadoc-plugin: 3.0.1 ile ilgili sahneyi doğru bir şekilde gerçekleştirin?
Vitalii Diravka

@VitaliiDiravka Hatalara bağlıdır ... Lütfen bunun için ayrı bir soru sorun.
Martin Höller

22

failOnErrorÖzelliği şu şekilde ayarlamayı deneyebilirsiniz ( eklenti belgelerine bakın ) 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>

Dokümanlardan da görebileceğiniz gibi, varsayılan değer true.


@Martin fikri için teşekkürler. Bu özellik ile en azından projeyi tekrar kurabilir ve kurabilirim, ancak hala java doc jar eksik (Maven central'a dağıtmak için ihtiyacım var). Sorumu deneyin ayrıntılarıyla güncelledim.
Sergio

Bu benim için en yeterli cevaptı. Sadece javadocs hala eksik olduğunda geliştirme çalışmaları sırasında test etmek istedim.
ZachSand

17

Maven komutunu çalıştırmak için kullanılan JRE sürümünüze bağlı olduğundan DocLint, pom.xml'nizde varsayılan olarak devre dışı bırakmak istemiyorsanız

Bu nedenle, komut satırından anahtarı kullanabilirsiniz -Dadditionalparam=-Xdoclint:none.

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


3
Bu özellikle yararlıdır çünkü Jenkins'i de kullanabilirsiniz. 'Global MAVEN_OPTS' ('Sistemi Yapılandır' altında) olarak ayarlayın -Dadditionalparam=-Xdoclint:noneve tüm yapılarınız Java 8 ile çalışacaktır.
Wilfred Hughes

mvn org.apache.maven.plugins:maven-javadoc-plugin:3.1.0:jar -DadditionalJOption=-Xdoclint:none- benim için çalıştı
Roman Khomyshynets

10

Configuration özelliği adı, maven-javadoc-plugin'in 3.0.0 olan en son sürümünde değiştirildi.

Bu yüzden <additionalparam> çalışmaz. Bu yüzden aşağıdaki gibi değiştirmeliyiz.

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

doclintBuradaki belgelere bakın : maven.apache.org/plugins/maven-javadoc-plugin/…
Peter W

Benim için çözdüm, Şubat'19'da github kaynağından OpenGrok'u inşa ettim. Yamanızın pom.xmlprojenin src / build dizinine girdiği belirtilmelidir. Benim durumumda tek yapmam gereken arama yapmak maven-javadoc-pluginve <configuration></configuration>zaten mevcut olan bloğa gitmek ve eklemekti <doclint>none</doclint>. Tüm bunlar bir kez bildiği kadar kolay, buradaki bağlam, OpenGrok'ta farklı bir hatayı düzeltmeye çalışıyorum ve daha önce Maven'i hiç kullanmadım ve sadece anlamaya çalışmak için başka bir alt projeye geri dönmek istemiyorum hızlı düzeltmelerin nasıl uygulanacağını öğrenin.
clearlight

4

Diğer cevaplara bir bakış eklemek istiyorum

Benim durumumda

-Xdoclint: yok

İşe yaramadı.

Bununla başlayalım, projemde javadoc'a gerçekten ihtiyacım yoktu. Sadece bazı gerekli eklentilerin derleme süresi bağımlılığı vardı.

Yani, sorunumu çözmenin en basit yolu şuydu:

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

4

İtibariyle kullanmakta olması gereken 3.0.0 maven-javadoc-eklentisi additionalJOption Eğer devre dışı doclint için Javadoc istiyorum eğer öyleyse, ek bir Javadoc seçeneği ayarlamak için, aşağıdaki özelliği eklemek gerekir.

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

Ayrıca maven-javadoc-plugin'in 3.0.0 veya daha yüksek bir versiyonundan da bahsetmelisiniz.

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

3

Yani, kendimi yapmadığım birkaç saat kaydedin ve işe yaramazsa bunu deneyin:

 <additionalJOption>-Xdoclint:none</additionalJOption>

Etiket daha yeni sürümler için değiştirilir.



Bazen -Xdoclintkendisi yeterli değildir, ancak ek argümanlara ihtiyaç vardır. Bunun için yeni sürümler maven-javadoc-pluginsağlar additionalJOptions, eski değil. Geçici çözüm şudur: <additionalJOption>"-Xdoclint:none" "--allow-script-in-comments"</additionalJOption>Tırnak işaretleri önemlidir, aksi takdirde eklenti bunları ekler ve iki yerine yalnızca bir argayı kabul ederek wrong argshatalarla sonuçlanır .
Thorsten Schöning

Birincisi yalnızca Windows üzerinde, Linux üzerinde çalışır: javadoc: error - Illegal package name: ""-Xdoclint:none" "--allow-script-in-comments""Dış tırnaklar günlük kaydı ifadesi tarafından eklenir ve kabukta mevcut değildir. Sorun sanırım Windows javadocüzerinde yürütülür cmd.exe, hangi komut satırı olarak büyük bir dize ayrıştırır ve additionalJOptionamaçlandığı gibi böler . Linux'ta argümanlar ayrı ayrı doğrudan işleme additionalJOptiongeçirilir ve hataya yol açan bir argüman olarak geçirilir.
Thorsten Schöning

Göre Process Monitor, cmd.exekullanılmaz. Java büyük olasılıkla büyük bir komut satırı oluşturur ve CreateProcessbunu iletir, böylece Windows tarafından istendiği gibi ayrıştırılır: Tırnakları onurlandırırken boşlukları bağımsız değişkenlere bölme.
Thorsten Schöning

3

Aşağıdan eklendi

JAVA_TOOL_OPTIONS=-DadditionalJOption=-Xdoclint:none

Jenkins işine:

Yapılandırma> Oluşturma Ortamı> Oluşturma işlemine ortam değişkenlerini ekleme> Özellikler İçerik

Jenkins Maven ile kod oluşturma sorunumu çözdüm :-)


Bu, maven-javadoc-plugin 2.4 için çalışır, ancak 2.5'te (ve 3.0.0'a kadar) başlar, bu bir hataya neden olur: "Çıkış kodu: 1 - javadoc: hata - geçersiz bayrak: -Xdoclint: yok". Yani çözüm kırılgandır.
Akom

1
Bu mvn release:performsözdizimi ile kullanırken olması gerekir mvn release:perform -Darguments="-Dmaven.javadoc.skip=true".
PatS

2

Bu yardımcı olacak emin değilim, ama ben bile oozie-4.2.0 sürümü ile çok yakın zamanda aynı sorunla karşı karşıya . Yukarıdaki cevapları okuduktan sonra sadece komut satırı üzerinden maven seçeneğini ekledim ve benim için çalıştı. Yani, sadece burada paylaşıyorum.

Java 1.8.0_77 kullanıyorum , java 1.7 ile denemedim

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


1

Eksik @paramve @returnetiketleri yok saymak için missing doclint grubunu devre dışı bırakmak yeterlidir . Bu şekilde, javadoc daha üst düzey ve sözdizimi sorunları için denetlenecektir:

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

Bu sürüm 3.0 veya daha yeni bir eklenti için unutmayın.


0

Partiye biraz geç kaldım, ama ben de geçici çözüm aramak zorunda kaldım, burada sona erdi ve sonra buldum.

Benim için işe yarar: -

export JAVA_TOOL_OPTIONS=-DadditionalJOption=-Xdoclint:none

Ve sonra Maven'in gerektirmediğini bu konuda vs. Güzel şey sizin Maven yapı, herhangi bir Linux dağıtımı yapı oluşturmaya başla yapılandırma dosyaları modifikasyon - Ben nesnel bir demet yeniden olduğu gibi yapamazdım Centos rpm paketleri, böylece zorunda gerçekten derine in.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.