java - warning - xdoclint




Maven funktioniert nicht in Java 8, wenn Javadoc-Tags unvollständig sind (10)

Seit ich Maven benutzt habe, konnte ich in meinem lokalen Repository Projekte erstellen und installieren, die unvollständige Javadoc-Tags haben (zum Beispiel einen fehlenden Parameter).

Da ich jedoch nach Java 8 (1.8.0-ea-b90) migriert habe, ist Maven absolut strikt gegen fehlende Dokumentations-Tags und zeigt mir viele Javadoc-Fehler im Zusammenhang mit Javadoc-Problemen, wenn ich versuche, ein Projekt zu erstellen oder zu installieren, das Javadoc nicht enthält "perfekt". Einige der Projekte, die ich in meinem lokalen Repository zu kompilieren und zu installieren versuche, sind Projekte von Drittanbietern, von denen ich keine Kontrolle habe. Die Lösung, alle Javadocs in all diesen Projekten zu reparieren, scheint in meinem Szenario nicht durchführbar zu sein.

Dies ist ein kleiner Teil der Ausgabe, die ich sehe, wenn ich mvn clean package install in meinem Projekt ausführe:

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

Das Javadoc Maven Plugin ist so in meinem POM konfiguriert:

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

Wie ich schon sagte, alles funktioniert gut, wenn ich zurück zu Java 7 gehe. Vielleicht ist das ein Fehler, der damit zusammenhängt, dass Maven in Java 8 läuft? Wie kann ich es mit Java 8 machen (dh in der Lage sein, das Javadoc des Projekts zu erstellen und seinen Code in meinem lokalen Repository zu installieren)? Ich habe mit Maven 3.0.3 und 3.0.5 in OSX getestet.

AKTUALISIEREN:

Wenn ich meine Javadoc-Plugin-Konfiguration mit <failOnError>false</failOnError> (danke Martin) <failOnError>false</failOnError> :

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

Dann wird das Projekt in meinem lokalen Repository installiert. Die Javadoc-JAR wird jedoch immer noch nicht generiert.

Ein Fragment der Ausgabe, die ich in der Konsole mit dieser neuen Konfiguration sehe, ist:

[FEHLER] MavenReportException: Fehler beim Erstellen des Archivs: Exit code: 1 - /Users/....java:18: warning: nein @param ... Befehlszeile war: / Library / Java / Home / bin / javadoc @options @Pakete

Siehe generierte Javadoc-Dateien unter '/ Benutzer / sergioc / Dokumente / workspaces / heal / minitoolbox / target / apidocs'.

bei org.apache.maven.plugin.javadoc.AbstractJavadocMojo.executeJavadocCommandLine (AbstractJavadocMojo.java:5043) unter org.apache.maven.plugin.javadoc.AbstractJavadocMojo.executeReport (AbstractJavadocMojo.java:1990) unter org.apache.maven.plugin .javadoc.JavadocJar.execute (JavadocJar.java:181) unter org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo (DefaultBuildPluginManager.java:101) unter org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java : 209) bei org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:153) bei org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:145) bei org.apache. maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:84) unter org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:59) unter org.apache.maven.lifecycle.internal.LifecycleStarter. singleThreadedBuild (LifecycleStarter.java:183) bei org.apache.maven.lifecycle.internal.Lifecyc leStarter.execute (LifecycleStarter.java:161) bei org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:320) bei org.apache.maven.DefaultMaven.execute (DefaultMaven.java:156) bei org.apache.maven .cli.MavenCli.execute (MavenCli.java:537) bei org.apache.maven.cli.MavenCli.doMain (MavenCli.java:196) unter org.apache.maven.cli.MavenCli.main (MavenCli.java:141 ) unter sun.reflect.NativeMethodAccessorImpl.invoke0 (Native Methode) unter sun.reflect.NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl.java:57) unter sun.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.java:43) unter java.lang.reflect. Method.invoke (Method.java:491) bei org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced (Launcher.java:290) bei org.codehaus.plexus.classworlds.launcher.Launcher.launch (Launcher.java: 230) bei org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode (Launcher.java:409) bei org.codehaus.plexus.classworlds.launcher.Launcher.main (Launcher.java:352)

Irgendwelche Workarounds zum Erstellen der Quellen, Installieren des Projekts und Generieren des Javadoc JAR in einem Schritt, da es mit Java 7 arbeitete?


Die kürzeste Lösung, die mit jeder Java-Version funktioniert:

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

Fügen Sie das einfach zu Ihrem POM hinzu und Sie können loslegen.

Dies ist im Grunde die Antwort von @ ankon plus die Antwort von @ zapp .

Für maven-javadoc-plugin 3.0.0 Benutzer:

Ersetzen

<additionalparam>-Xdoclint:none</additionalparam>

durch

<doclint>none</doclint>


Ab maven-javadoc-plugin 3.0.0 sollten Sie additionalJOption , um eine zusätzliche Javadoc-Option festzulegen. Wenn Sie möchten, dass Javadoc doclint deaktiviert, sollten Sie die folgende Eigenschaft hinzufügen.

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

Sie sollten auch die Version von maven-javadoc-plugin als 3.0.0 oder höher erwähnen.

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

Der Name der Konfigurationseigenschaft wurde in der neuesten Version von maven-javadoc-plugin 3.0.0 geändert.

Daher wird <Zusatzparam> nicht funktionieren. Also müssen wir es wie folgt modifizieren.

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

Der einfachste Ansatz, um mit java 8 und java 7 arbeiten zu können, ist die Verwendung eines Profils im 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>

Fügen Sie den Abschnitt mit den globalen Eigenschaften in der Pom-Datei hinzu:

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

Die allgemeine Lösung, die hier in den anderen Antworten bereitgestellt wird (Hinzufügen dieser Eigenschaft im Plugins-Abschnitt), funktionierte aus irgendeinem Grund nicht. Nur durch globale Einstellung konnte ich das javadoc jar erfolgreich erstellen.


Hier ist der prägnanteste Weg, den ich kenne, um Doklint-Warnungen zu ignorieren, unabhängig von der verwendeten Java-Version. Es ist nicht erforderlich, die Plugin-Konfiguration in mehreren Profilen mit geringfügigen Änderungen zu duplizieren.

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

Getestet auf Orakel / open jdk 6, 7 und 8.


Ich bin ein wenig zu spät zur Party, aber ich war gezwungen, auch nach einem Workaround zu suchen, endete hier und fand es dann.

Folgendes funktioniert für mich: -

export JAVA_TOOL_OPTIONS=-DadditionalJOption=-Xdoclint:none

Und dann starte deinen Maven-Build, einen Linux-Distributions-Build usw. Schön, dass es keine Modifikation der Maven- Konfigurationsdateien erfordert - ich konnte das nicht, da es mein Ziel war, ein paar Centos-RPM- Pakete neu aufzubauen geh wirklich tief.


Ich bin mir nicht sicher, ob dies helfen wird, aber selbst ich hatte das gleiche Problem vor kurzem mit oozie-4.2.0 Version. Nachdem ich die obigen Antworten durchgelesen habe, habe ich gerade die maven-Option über die Befehlszeile hinzugefügt und es hat für mich funktioniert. Also, teilen Sie einfach hier.

Ich benutze Java 1.8.0_77 , habe nicht mit Java 1.7 versucht

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


Ich möchte einige Einblicke in andere Antworten hinzufügen

In meinem Fall

-Xdoclint: keine

Hat nicht funktioniert.

Fangen wir damit an, in meinem Projekt brauchte ich Javadoc überhaupt nicht. Nur einige notwendige Plugins hatten eine Build-Zeit-Abhängigkeit davon.

Also, der einfachste Weg mein Problem zu lösen war:

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

Sie könnten versuchen, die Eigenschaft failOnError (siehe Plugin-Dokumentation ) auf 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>

Wie Sie in den Dokumenten sehen können, ist der Standardwert true .





javadoc