Maven nie działa w Javie 8, gdy tagi Javadoc są niekompletne


312

Odkąd korzystam z Maven, byłem w stanie zbudować i zainstalować w moim lokalnym repozytorium projekty, które mają niekompletne tagi Javadoc (na przykład brakujący parametr).

Ponieważ jednak przeprowadziłem migrację do Javy 8 (1.8.0-ea-b90), Maven jest absolutnie surowy w kwestii brakujących znaczników dokumentacji i pokazuje mi wiele błędów Javadoc związanych z problemami Javadoc, gdy próbuję zbudować lub zainstalować projekt, w którym Javadoc nie jest "idealny". Niektóre projekty, które próbuję skompilować i zainstalować w moim lokalnym repozytorium, to projekty stron trzecich, nad którymi nie mam kontroli. Zatem obejście po prostu naprawienia wszystkich Javadoców we wszystkich tych projektach nie wydaje się wykonalne w moim scenariuszu.

Oto niewielka część danych wyjściowych, które widzę podczas wykonywania mvn clean package installw moim projekcie:

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

Wtyczka Javadoc Maven jest skonfigurowana w następujący sposób w mojej POM:

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

Jak powiedziałem wcześniej, wszystko działa poprawnie, jeśli wrócę do Javy 7. Być może jest to błąd związany z działaniem Mavena w Javie 8? Jak mogę sprawić, by działało (tj. Móc zbudować Javadoc projektu i zainstalować jego kod w moim lokalnym repozytorium) z Javą 8? Testowałem zarówno z Maven 3.0.3, jak i 3.0.5 w OSX.

AKTUALIZACJA:

Jeśli zmienię konfigurację wtyczki Javadoc za pomocą <failOnError>false</failOnError>(dzięki 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>

Następnie projekt jest instalowany w moim lokalnym repozytorium. Jednak JAR Javadoc nadal nie jest generowany.

Fragment danych wyjściowych, które widzę w konsoli w tej nowej konfiguracji, to:

[BŁĄD] MavenReportException: Błąd podczas tworzenia archiwum: Kod zakończenia: 1 - /Users/....java:18: ostrzeżenie: no @param ... Wiersz polecenia to: / Library / Java / Home / bin / javadoc @options @pakiety

Zapoznaj się z wygenerowanymi plikami Javadoc w katalogu „/ Users / sergioc / Documents / workspaces / heal / minitoolbox / target / apidocs”.

w org.apache.maven.plugin.javadoc.AbstractJavadocMojo.executeJavadocCommandLine (AbstractJavadocMojo.java:5043) w org.apache.maven.plugin.javadoc.AbstractJavadocMojo.executeReport (AbstractJavadocMo990) .javadoc.JavadocJar.execute (JavadocJar.java:181) w org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo (DefaultBuildPluginManager.java:101) w org.apache.maven.lifecycle.internal.MojoExecja : 209) w org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:153) w org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:145) w org.apache. maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:84) w org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:59) w org.apache.maven.lifecycle.internal.LifecycleStarter.singleThreadedBuild (LifecycleStarter.java:183) w org.apache.maven.lifecycle.internal.LifecycleStarter.execute (Lifecycle16arter.ja) w org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:320) w org.apache.maven.DefaultMaven.execute (DefaultMaven.java:156) w org.apache.maven.cli.MavenCli.execute (MavenCli.java : 537) w org.apache.maven.cli.MavenCli.doMain (MavenCli.java:196) w org.apache.maven.cli.MavenCli.main (MavenCli.java:141) w sun.reflect.NativeMethodAccessorImpl.invoke0 ( Metoda rodzima) w sun.reflect.NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl.java:57) w sun.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.java:43) w java.lang.reflect.Method.wywołaj (Method.java:491) w org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced (Launcher.java:290) w org.codehaus.plexus.classworlds.launcher.Launcher.launch (Launcher.java:230) w org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode (Launcher.java:409) w org.codehaus.plexus.classworlds.launcher.Launcher.main (Launcher.java:352)

Jakieś obejście dotyczące sposobu budowania źródeł, instalowania projektu i generowania pliku JAR Javadoc w jednym kroku podczas pracy z Javą 7?


Cześć @ 75inchpianist, zaktualizowałem pytanie, w rzeczywistości są to błędy (chociaż, co zaskakujące, ostatni wiersz błędu odnosi się do ostrzeżenia, jak widać w wygenerowanym wyniku). Projekt nie jest zainstalowany w moim lokalnym repozytorium, więc nie jest uważany za proste ostrzeżenie :(
Sergio,

Dla GoogleJuice: dostałem błąd „błąd: złe użycie '>'”, ponieważ miałem dużą strzałkę w komentarzu JavaDoc
Drew Stephens

1
Może przyda się komuś: Możesz łatwo znaleźć wszystkie te niekompletne tagi w IntelliJ, uruchamiając inspekcję Ctrl + Alt + Shift + i „Deklaracja ma problemy z JavaDoc”
Sergey Ponomarev

1
To nie jest raj, to program javadoc, który zaostrzył się w Javie 8.
Thorbjørn Ravn Andersen

Odpowiedzi:


388

Najlepszym rozwiązaniem byłoby naprawić błędy javadoc. Jeśli z jakiegoś powodu nie jest to możliwe (np. Automatycznie wygenerowany kod źródłowy), możesz wyłączyć tę kontrolę.

DocLint to nowa funkcja w Javie 8 , którą podsumowano jako:

Zapewniają środki do wykrywania błędów w komentarzach Javadoc na wczesnym etapie cyklu programowania oraz w sposób, który można łatwo połączyć z powrotem z kodem źródłowym.

Jest to domyślnie włączone i przed wygenerowaniem Javadocs przeprowadzi wiele kontroli. Musisz wyłączyć to dla Java 8, jak określono w tym wątku . Musisz dodać to do swojej konfiguracji maven:

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

Dla maven-javadoc-plugin 3.0.0+: Zamień

<additionalparam>-Xdoclint:none</additionalparam>

z

<doclint>none</doclint>

18
Czy istnieje sposób, aby to działało zarówno z JDK 8, jak i JDK 7? Nie działa w JDK 7, ponieważ javadocnie zna tej opcji.
Feuermurmel

8
Chociaż odpowiada to na pytanie zadane tutaj, chciałbym poradzić przyszłym użytkownikom, aby najpierw sprawdzili odpowiedź Peterha: stackoverflow.com/a/34809831/1180785 (większość osób, które napotykają ten problem, będzie miała tylko kilka miejsc do naprawienia, więc lepiej naprawić je niż wyłączyć czek!)
Dave

8
W przypadku wtyczki maven-javadoc użyj <doclint>none</doclint>. Zobacz maven.apache.org/plugins/maven-javadoc-plugin/…
coolersport

11
Również ponieważ maven-javadoc-plugin 3.0.0 <additionalparam/>został zastąpiony przez <additionalOptions/>. Patrz problemy.apache.org/jira/browse/MJAVADOC-475
fdelsert,

1
To jest poprawne. Chciałbym powiadomić, że podczas migracji z maven 2 do maven 3 nie zapominaj, że ten tag wtyczki nie powinien być dołączany do tagu raportującego, ale bezpośrednio do pluginManagement (pom.xml)
dimeros

97

Najłatwiejszym podejściem do pracy zarówno z java 8, jak i java 7 jest użycie profilu w kompilacji:

<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
Najlepszym rozwiązaniem byłaby prawdopodobnie hybryda między Twoim rozwiązaniem a tym, które przedstawił Zapp. Jeśli zostawisz to w ten sposób, polecenie mvn site: site nadal zawiesza się. Powinieneś utworzyć profil aktywowany przez 1.8 jdk, który ustawia globalną właściwość.
Max Nad

64

Oto najbardziej zwięzły sposób, w jaki jestem świadom ignorowania ostrzeżeń doclint niezależnie od używanej wersji Java. Nie ma potrzeby duplikowania konfiguracji wtyczek w wielu profilach z niewielkimi modyfikacjami.

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

Testowane na oracle / open jdk 6, 7, 8 i 11.


1
A gdzie konkretnie to należy umieścić?
jasne

1
@clearlight, zarówno buildi profilessą bloki najwyższego poziomu w Maven pom.xml. maven.apache.org/pom.html#Build .
Oliver Gondža

Dzięki. W końcu to odkryłem, ale dobrze jest mieć to związane z tą odpowiedzią.
jasne

38

Dodaj do sekcji właściwości globalnych w pliku pom:

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

Wspólne rozwiązanie podane tutaj w innych odpowiedziach (dodanie tej właściwości w sekcji wtyczek) z jakiegoś powodu nie działało. Tylko ustawiając go globalnie, mogłem pomyślnie zbudować słoik javadoc.


1
to jedyne rozwiązanie, które działało dla mnie. Odpowiedziałem również tutaj: blog.joda.org/2014/02/turning-off-doclint-in-jdk-8-javadoc.html
acvcu

37

Najkrótsze rozwiązanie, które będzie działać z dowolną wersją Java:

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

Po prostu dodaj to do POM i możesz zacząć.

Jest to w zasadzie odpowiedź @ ankon plus odpowiedź @ zapp .


Dla użytkowników maven-javadoc-plugin 3.0.0:

Zastąpić

<additionalparam>-Xdoclint:none</additionalparam>

przez

<doclint>none</doclint>


To dla mnie najlepsze rozwiązanie. Działa z botami java 7 i java 8. Ale sposób, w jaki działa, jest rodzajem magii:. W jaki sposób ten parametr „dodatkowyParam” dodaje się do wtyczki javadoc (i nie do innych)
pdem

1
@pdem Dodatkowy parametr jest dodawany do Maven, a nie do wtyczki Javadoc. To rozwiązanie działa niezależnie od tego, czy używasz wtyczki, czy też nie.
Fred Porciúncula

2
Ponieważ maven-javadoc-plugin 3.0.0, musisz dodać <additionalJOption>-Xdoclint:none</additionalJOption>lub <doclint>none</doclint>własność do<properties>
Sergi

Tak, dodanie profilu i ustawienia JDK 8 <doclint> none </doclint> rozwiązuje problem. Generuje jar javadoc tak samo, jak generował w JDK 7. Dzięki.
Saurabhcdt

1
Czy możesz wyjaśnić: w przypadku wtyczki maven-javadoc 3.0.0 i nowszej, jeśli po prostu sprecyzuję <doclint>none</doclint>(bez aktywacji opartej na wersji JDK), czy nadal będzie zawieść w JDK mniejszej niż 1.8, czy też wtyczka maven-javadoc automatycznie wykryje, czy doclintopcja jest obsługiwana przez aktualną wersję Java?
Garret Wilson,

31

Nie sądzę, aby wyłączenie DocLint było dobrym rozwiązaniem, przynajmniej na dłuższą metę. Dobrze, że Javadoc stał się nieco bardziej rygorystyczny, więc właściwym sposobem rozwiązania problemu z kompilacją jest naprawienie podstawowego problemu . Tak, ostatecznie musisz naprawić te pliki kodu źródłowego.

Oto rzeczy, na które warto zwrócić uwagę:

  • Zniekształcony HTML (na przykład brakujący znacznik końcowy, nawiasy nieoznaczone itp.)
  • Nieprawidłowy {@link }s. (to samo dotyczy podobnych tagów, takich jak @see)
  • Nieprawidłowe @authorwartości Kiedyś było to akceptowane: @author John <john.doe@mine.com>ale już nie tak z powodu nieuchwytnych nawiasów.
  • Tabele HTML w Javadoc wymagają teraz streszczenia lub podpisu. Zobacz to pytanie w celu wyjaśnienia.

Musisz po prostu naprawić pliki kodu źródłowego i kontynuować tworzenie Javadoc, dopóki nie będzie można go skompilować bez awarii. Uciążliwe tak, ale osobiście podoba mi się, kiedy podniosłem moje projekty do poziomu DocLint, ponieważ oznacza to, że mogę być bardziej pewny, że Javadoc, który produkuję, jest tym, co zamierzam.

Oczywiście istnieje problem, jeśli generujesz Javadoc na jakimś kodzie źródłowym, którego sam nie stworzyłeś, na przykład ponieważ pochodzi on z jakiegoś generatora kodu, np . Wsimport . Dziwne, że Oracle nie przygotowało własnych narzędzi do zgodności z JDK8 przed faktycznym wydaniem JDK8. Wygląda na to, że nie zostanie naprawiony, dopóki Java 9 . Tylko w tym konkretnym przypadku sugeruję wyłączenie DocLint zgodnie z dokumentacją w innym miejscu na tej stronie.


1
Zgadzam się tutaj całkowicie, że w przypadku wygenerowanego kodu możesz po prostu powiedzieć wtyczce, aby nie przetwarzała kodu w danym pakiecie, dodając sekcję excludePackageNames w sekcji konfiguracji wtyczki javadoc. patrz maven.apache.org/plugins/maven-javadoc-plugin/examples/…
Newtopian

@Newtopian. Słuszna uwaga. Jednak w moim przypadku faktycznie potrzebowałem wygenerowanego kodu, wsimportaby stać się częścią Javadoc.
peterh

O wiele łatwiej jest to powiedzieć niż zrobić, ponieważ wielu z nas, którzy napotykają te problemy, próbuje zbudować nieznany kod typu open source, który ma gdzieś zależność od Maven i nie mamy pojęcia, jak to wszystko działa, więc nie ma łatwego sposobu na usunięcie przyczyn. W kontekście jest za dużo krótkowzroczności. Ludzie muszą bardziej uogólniać zakres odpowiedzi i podawać więcej szczegółowych informacji na temat tego, jak wprowadzić poprawki.
jasne

30

Zastępowanie maven-javadoc-plugintylko konfiguracji, nie rozwiązuje problemu mvn site(używane np. Na etapie wydania). Oto, co musiałem zrobić:

<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
Jest to ważna kwestia, ponieważ brak tego ustawienia w aktywacji wtyczki witryny spowoduje zwolnienie: wykonanie nie powiedzie się, a wydanie: przygotowanie działa poprawnie. Znalezienie i rozwiązanie problemu może być bardzo irytujące.
Peter N. Steinmetz,

Należy pamiętać, że konfiguracja za maven-javadoc-pluginpośrednictwem <reportPlugins>sekcji niemaven-site-plugin jest zalecana dla najnowszych wersji Maven 3.
Martin Höller

@ MartinHöller Więc jak rozwiązać błędy w wydaniu: wykonać etap związany z wtyczką mavene-javadoc: 3.0.1 w odpowiedni sposób?
Vitalii Diravka

@VitaliiDiravka Zależy od błędów ... Zadaj w tym celu osobne pytanie.
Martin Höller,

22

Możesz spróbować ustawić failOnErrorwłaściwość (patrz dokumentacja wtyczki ) na 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>

Jak widać z dokumentów, wartością domyślną jest true.


Dzięki za pomysł @Martin. Dzięki tej właściwości przynajmniej mogę zbudować i zainstalować projekt ponownie, jednak wciąż brakuje mi jar jar Java (muszę go wdrożyć w Maven Central). Zaktualizowałem swoje pytanie o szczegóły eksperymentu.
Sergio

To była dla mnie najbardziej wystarczająca odpowiedź. Chciałem tylko przetestować budowanie podczas ciągłego rozwoju, gdy javadocs były jeszcze niekompletne.
ZachSand

17

Ponieważ zależy to od wersji środowiska JRE używanego do uruchamiania polecenia maven, którego prawdopodobnie nie chcesz wyłączać DocLint domyślnie w pliku pom.xml

Dlatego z wiersza poleceń możesz użyć przełącznika -Dadditionalparam=-Xdoclint:none .

Przykład: mvn clean install -Dadditionalparam=-Xdoclint:none


3
Jest to szczególnie przydatne, ponieważ możesz go również używać Jenkins. Ustaw „Global MAVEN_OPTS” (w obszarze „Konfiguruj system”) na, -Dadditionalparam=-Xdoclint:nonea wszystkie twoje kompilacje będą działać z Javą 8.
Wilfred Hughes

mvn org.apache.maven.plugins:maven-javadoc-plugin:3.1.0:jar -DadditionalJOption=-Xdoclint:none- zadziałało dla mnie
Roman Khomyshynets

10

Nazwa właściwości konfiguracji została zmieniona w najnowszej wersji wtyczki maven-javadoc, czyli 3.0.0.

Dlatego <additionalparam> nie będzie działać. Więc musimy to zmodyfikować jak poniżej.

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

Zobacz doclintdokumentację tutaj: maven.apache.org/plugins/maven-javadoc-plugin/…
Peter W

Rozwiązałem go, budując OpenGrok ze źródła github w 19 lutego. Powinieneś wspomnieć, że twoja łata znajduje się pom.xmlw katalogu src / build projektu. W moim przypadku wszystko, co musiałem zrobić, to poszukać, maven-javadoc-plugina następnie przejść do <configuration></configuration>bloku już obecnego i dodać <doclint>none</doclint>. Choć wszystko to jest raz znane, kontekst tutaj polega na tym, że próbuję naprawić inny błąd w OpenGrok i nigdy wcześniej nie korzystałem z Maven i nie chcę wracać do innego podprojektu, żeby się domyślić jak zastosować szybkie poprawki.
jasne

4

Chciałbym dodać wgląd w inne odpowiedzi

W moim przypadku

-Xdoclint: brak

Nie działało

Zacznijmy od tego, że w moim projekcie tak naprawdę wcale nie potrzebowałem javadoc. Tylko niektóre niezbędne wtyczki zależały od czasu kompilacji.

Najprostszym sposobem rozwiązania mojego problemu było:

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

4

Począwszy od maven-javadoc-plugin 3.0.0, powinieneś był używać dodatkowej opcji JOption, aby ustawić dodatkową opcję Javadoc, więc jeśli chcesz, aby Javadoc wyłączał doclint, powinieneś dodać następującą właściwość.

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

Należy również wspomnieć o wersji wtyczki maven-javadoc jako 3.0.0 lub nowszej.

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

3

Więc zaoszczędź sobie kilka godzin, których nie zrobiłem i wypróbuj to, jeśli wydaje się, że nie działa:

 <additionalJOption>-Xdoclint:none</additionalJOption>

Tag został zmieniony dla nowszych wersji.



Czasem -Xdoclintsama nie wystarczy, ale potrzebne są dodatkowe argumenty. Nowsze wersje maven-javadoc-pluginzapewniają additionalJOptionsto, starsze nie. Obejście problemu: <additionalJOption>"-Xdoclint:none" "--allow-script-in-comments"</additionalJOption>Cytaty są ważne, w przeciwnym razie wtyczka doda je i przyjmie tylko jeden argument zamiast dwóch, co spowoduje wrong argsbłędy.
Thorsten Schöning

Ten pierwszy działa tylko w systemie Windows, a zamiast Linuksa: javadoc: error - Illegal package name: ""-Xdoclint:none" "--allow-script-in-comments""cytaty zewnętrzne są dodawane przez instrukcję logowania i nie są obecne w powłoce. Myślę, że problem polega na tym, że w systemie Windows javadocjest wykonywany przez cmd.exe, który analizuje jeden duży ciąg jako linię poleceń i dzieli additionalJOptionzgodnie z przeznaczeniem. W systemie Linux argumenty są przekazywane bezpośrednio do procesu i additionalJOptionsą przekazywane jako jeden argument, co prowadzi do błędu.
Thorsten Schöning

Według Process Monitor, cmd.exenie jest używany. Najprawdopodobniej Java po prostu buduje jeden duży wiersz poleceń i przekazuje go do tego CreateProcess, aby został przeanalizowany przez system Windows zgodnie z przeznaczeniem: Dzielenie argumentów spacjami podczas honorowania cudzysłowów.
Thorsten Schöning

3

Dodano poniżej

JAVA_TOOL_OPTIONS=-DadditionalJOption=-Xdoclint:none

Do pracy Jenkinsa:

Konfiguracja> Środowisko kompilacji> Wprowadzaj zmienne środowiskowe do procesu budowania> Zawartość Właściwości

Rozwiązałem mój problem z budowaniem kodu przez Jenkins Maven :-)


Działa to dla wtyczki maven-javadoc-plugin 2.4, ale począwszy od wersji 2.5 (aż do 3.0.0), powoduje to błąd: „Kod wyjścia: 1 - javadoc: błąd - nieprawidłowa flaga: -Xdoclint: brak”. Więc rozwiązanie jest kruche.
Akom

1
Podczas korzystania ze mvn release:performskładni musi być mvn release:perform -Darguments="-Dmaven.javadoc.skip=true".
PatS

2

Nie jestem pewien, czy to pomoże, ale nawet ostatnio miałem dokładnie taki sam problem z wersją oozie-4.2.0 . Po przeczytaniu powyższych odpowiedzi właśnie dodałem opcję maven za pomocą wiersza poleceń i zadziałało to dla mnie. Udostępniam tutaj.

Używam java 1.8.0_77 , nie próbowałem z java 1.7

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


1

Aby zignorować brakujące @parami @returnznaczniki, wystarczy wyłączyć missing grupę dokumentów . W ten sposób javadoc będzie nadal sprawdzany pod kątem problemów z wyższym poziomem i składnią:

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

Pamiętaj, że dotyczy to wtyczki w wersji 3.0 lub nowszej.


0

Jestem trochę spóźniony na przyjęcie, ale musiałem też szukać obejścia, znalazłem się tutaj, a potem go znalazłem.

Oto, co działa dla mnie: -

export JAVA_TOOL_OPTIONS=-DadditionalJOption=-Xdoclint:none

A potem rozpocznij kompilację Maven, dowolną kompilację dystrybucji Linuksa itp. Fajną rzeczą jest to, że nie wymaga modyfikacji plików konfiguracyjnych Maven - nie mogłem tego zrobić, ponieważ moim celem było przebudowanie wielu pakietów rpm Centos , więc musiałem idź naprawdę głęboko.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.