Maven non funziona in Java 8 quando i tag Javadoc sono incompleti


312

Da quando uso Maven sono stato in grado di creare e installare nei miei repository locali progetti con tag Javadoc incompleti (ad esempio un parametro mancante).

Tuttavia, da quando sono migrato a Java 8 (1.8.0-ea-b90) Maven è assolutamente severo riguardo alla mancanza di tag di documentazione e mi mostra molti errori Javadoc relativi a problemi Javadoc quando provo a costruire o installare un progetto in cui Javadoc non è "Perfetto". Alcuni dei progetti che sto cercando di compilare e installare nel mio repository locale sono progetti di terze parti da cui non ho il controllo. Quindi la soluzione alternativa del semplice aggiustare tutti i Javadocs in tutti questi progetti non sembra fattibile nel mio scenario.

Questa è una piccola parte dell'output che vedo quando eseguo mvn clean package installnel mio progetto:

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

Il plug-in Javadoc Maven è configurato in questo modo nel mio 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>

Come ho detto prima, tutto funziona bene se torno a Java 7. Forse è un bug relativo a Maven in esecuzione su Java 8? Come potrei farlo funzionare (ovvero, poter costruire il Javadoc del progetto e installarne il codice nel mio repository locale) con Java 8? Ho testato con Maven 3.0.3 e 3.0.5 in OSX.

AGGIORNARE:

Se cambio la configurazione del mio plug-in Javadoc con <failOnError>false</failOnError>(grazie 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>

Quindi il progetto viene installato nel mio repository locale. Tuttavia, il JAR Javadoc non viene ancora generato.

Un frammento dell'output che vedo nella console con questa nuova configurazione è:

[ERRORE] MavenReportException: errore durante la creazione dell'archivio: codice di uscita: 1 - /Users/....java:18: avviso: no @param ... La riga di comando era: / Library / Java / Home / bin / javadoc @options @pacchi

Fare riferimento ai file Javadoc generati nella directory '/ Users / sergioc / Documents / workspaces / heal / minitoolbox / target / apidocs'.

at org.apache.maven.plugin.javadoc.AbstractJavadocMojo.executeJavadocCommandLine (AbstractJavadocMojo.java:5043) at org.apache.maven.plugin.javadoc.AbstractJavadocMojo.executeReportjo0ache.Mav.99J.av .javadoc.JavadocJar.execute (JavadocJar.java:181) at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo (DefaultBuildPluginManager.java:101) at org.apache.maven.lifecjo.ecut.oec.External : 209) su org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:153) su org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:145) su org.apache. maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:84) su org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:59) su org.apache.maven.lifecycle.internal.LifecycleStarter.singleThreadedBuild (LifecycleStarter.java:183) su org.apache.maven.lifecycle.internal.LifecycleStarter.execycle) su org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:320) su org.apache.maven.DefaultMaven.execute (DefaultMaven.java:156) su org.apache.maven.cli.MavenCli.execute (MavenCli.java : 537) at org.apache.maven.cli.MavenCli.doMain (MavenCli.java:196) at org.apache.maven.cli.MavenCli.main (MavenCli.java:141) at sun.reflect.NativeMethodAccessorImpl.invoke0 ( Metodo nativo) at sun.reflect.NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl.java:57) at sun.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.java:43) at java.langetfl.invoke (Method.java:491) at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced (Launcher.java:290) at org.codehaus.plexus.classworlds.launcher.Launcher.launch (Launcher.java:230) su org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode (Launcher.java:409) su org.codehaus.plexus.classworlds.launcher.Launcher.main (Launcher.java:352)

Qualche soluzione alternativa su come costruire i sorgenti, installare il progetto e generare il JAR Javadoc in un solo passaggio mentre funzionava con Java 7?


Ciao @ 75inchpianist, ho aggiornato la domanda, in realtà sono errori (anche se sorprendentemente l'ultima riga dell'errore si riferisce a un avviso, come puoi vedere nell'output generato). Il progetto non è installato nel mio repository locale, quindi non è considerato un semplice avvertimento :(
Sergio

Per GoogleJuice: ho ricevuto l'errore "errore: cattivo utilizzo di '>'" perché avevo una grande freccia nel commento JavaDoc
Drew Stephens,

1
Forse sarà utile per qualcuno: puoi facilmente trovare tutti questi tag incompleti in IntelliJ eseguendo l'ispezione Ctrl + Alt + Maiusc + i "La dichiarazione ha problemi JavaDoc"
Sergey Ponomarev,

1
Questo non è maven, è il programma javadoc che è diventato molto più rigoroso in Java 8.
Thorbjørn Ravn Andersen

Risposte:


388

La soluzione migliore sarebbe quella di correggere gli errori javadoc. Se per qualche motivo ciò non è possibile (ad es .: codice sorgente generato automaticamente), è possibile disabilitare questo controllo.

DocLint è una nuova funzionalità di Java 8 , che è riassunta in:

Fornire un mezzo per rilevare errori nei commenti Javadoc nelle prime fasi del ciclo di sviluppo e in modo che sia facilmente ricollegabile al codice sorgente.

Questo è abilitato per impostazione predefinita e eseguirà molti controlli prima di generare Javadocs. È necessario disattivarlo per Java 8 come specificato in questo thread . Dovrai aggiungere questo alla tua configurazione 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>

Per maven-javadoc-plugin 3.0.0+: Sostituisci

<additionalparam>-Xdoclint:none</additionalparam>

con

<doclint>none</doclint>

18
C'è un modo per farlo funzionare con JDK 8 e JDK 7? Non riesce su JDK 7 perché javadocnon conosce questa opzione.
Feuermurmel,

8
Mentre questo risponde alla domanda posta qui, mi piacerebbe consigliare futuri visitatori di verificare la risposta di PeterH prima: stackoverflow.com/a/34809831/1180785 (la maggior parte delle persone che colpiscono questo problema avranno solo una manciata di posti per risolvere, quindi è meglio per correggerli che disabilitare il controllo!)
Dave,

8
Per maven-javadoc-plugin, usare <doclint>none</doclint>. Vedi maven.apache.org/plugins/maven-javadoc-plugin/…
coolersport

11
Anche da maven-javadoc-plugin 3.0.0 <additionalparam/>è sostituito da <additionalOptions/>. Vedi issues.apache.org/jira/browse/MJAVADOC-475
fdelsert il

1
È corretto. Vorrei informare che durante la migrazione da Maven 2 a Maven 3, non dimenticare che questo tag plugin non dovrebbe essere incluso nel tag di segnalazione ma direttamente in pluginManagement (pom.xml)
dimeros

97

L'approccio più semplice per far funzionare le cose con java 8 e java 7 è usare un profilo nella 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
La soluzione migliore sarebbe probabilmente un ibrido tra la tua soluzione e quella fornita da Zapp. Se lo lasci in questo modo, il comando mvn site: site continuerà a bloccarsi. È necessario creare un profilo attivato da 1.8 jdk che imposta una proprietà globale.
Max Nad,

64

Ecco il modo più conciso di cui sono a conoscenza per ignorare gli avvisi di doclint indipendentemente dalla versione java utilizzata. Non è necessario duplicare la configurazione del plug-in in più profili con lievi modifiche.

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

Testato su Oracle / Open jdk 6, 7, 8 e 11.


1
E dove dovrebbe essere messo specificamente?
chiarimento

1
@clearlight, entrambi builde profilessono blocchi di livello superiore in Maven pom.xml. maven.apache.org/pom.html#Build .
Oliver Gondža,

Grazie. Alla fine l'ho scoperto, ma è bello averlo associato a questa risposta.
chiarisci il

38

Aggiungi nella sezione delle proprietà globali nel file pom:

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

La soluzione comune fornita qui nelle altre risposte (aggiungendo quella proprietà nella sezione plugin) non ha funzionato per qualche motivo. Solo impostandolo a livello globale ho potuto costruire con successo il vaso javadoc.


1
questa è l'unica soluzione che ha funzionato per me. Ho letto anche la risposta qui: blog.joda.org/2014/02/turning-off-doclint-in-jdk-8-javadoc.html
acvcu

37

La soluzione più breve che funzionerà con qualsiasi versione di Java:

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

Aggiungilo al tuo POM e sei a posto.

Questa è sostanzialmente la risposta di @ ankon più la risposta di @ zapp .


Per gli utenti di maven-javadoc-plugin 3.0.0:

Sostituire

<additionalparam>-Xdoclint:none</additionalparam>

di

<doclint>none</doclint>


È la soluzione migliore per me. Funziona con i robot java 7 e java 8. Ma il modo in cui funziona è una sorta di magia:. In che modo questo parametro "additionalParam" si aggiunge al plugin javadoc (e non agli altri)
pdem

1
@pdem Il parametro aggiuntivo viene aggiunto a Maven, non al plug-in Javadoc. Questa soluzione funziona indipendentemente dall'utilizzo esplicito del plug-in.
Fred Porciúncula,

2
Da maven-javadoc-plugin 3.0.0, devi aggiungere <additionalJOption>-Xdoclint:none</additionalJOption>o <doclint>none</doclint>proprietà al tuo<properties>
Sergi

Sì, l'aggiunta del profilo correlato a JDK 8 e l'impostazione <doclint> none </doclint> risolvono il problema. Genera javadoc jar come si stava generando in JDK 7. Grazie.
Saurabhcdt,

1
Puoi chiarire: con maven-javadoc-plugin 3.0.0 e versioni successive, se semplicemente specifico <doclint>none</doclint>(senza attivazione basata sulla versione JDK), continuerà a fallire su JDK meno di 1.8, oppure maven-javadoc-plugin rileva automaticamente se l' doclintopzione è supportata dalla versione corrente di Java?
Garret Wilson,

31

Non credo che disattivare DocLint sia una buona soluzione, almeno non a lungo termine. È positivo che Javadoc sia diventato un po 'più rigoroso, quindi il modo giusto per risolvere il problema di compilazione è quello di risolvere il problema sottostante . Sì, alla fine dovrai correggere quei file di codice sorgente.

Ecco le cose a cui prestare attenzione che in precedenza potresti cavartela:

  • HTML non valido (ad esempio un tag di fine mancante, parentesi non di escape, ecc.)
  • {@link }S non valido (lo stesso vale per tag simili come @see)
  • @authorValori non validi Questo era accettato: @author John <john.doe@mine.com>ma non più per le parentesi non salvate.
  • Le tabelle HTML in Javadoc ora richiedono un riepilogo o una didascalia. Vedi questa domanda per una spiegazione.

Dovrai semplicemente riparare i tuoi file di codice sorgente e continuare a creare il tuo Javadoc fino a quando non può essere compilato senza errori. Ingombrante sì, ma personalmente mi piace quando ho portato i miei progetti a livello di DocLint perché significa che posso essere più sicuro che il Javadoc che produco sia effettivamente quello che intendo.

C'è ovviamente il problema se stai generando Javadoc su un codice sorgente che non hai prodotto da te, ad esempio perché proviene da un generatore di codice, ad esempio wsimport . Strano che Oracle non abbia preparato i propri strumenti per la conformità JDK8 prima di rilasciare effettivamente JDK8. Sembra che non sarà risolto fino a Java 9 . Solo in questo caso particolare suggerisco di disattivare DocLint come documentato altrove in questa pagina.


1
Completamente d'accordo qui, detto questo, per il codice generato puoi semplicemente dire al plugin di non elaborare il codice in un determinato pacchetto aggiungendo una sezione excludePackageNames nella sezione di configurazione del plugin javadoc. vedi maven.apache.org/plugins/maven-javadoc-plugin/examples/…
Newtopian,

@Newtopian. Buon punto. Tuttavia, nel mio caso, in realtà avevo bisogno del codice generato wsimportper diventare parte di Javadoc.
Pietro,

È COSÌ molto più facile a dirsi che a farsi dal momento che molti di noi che si imbattono in questi problemi stanno cercando di costruire un codice open source sconosciuto che ha una dipendenza Maven da qualche parte e non abbiamo idea di come tutto funzioni, quindi non abbiamo un modo semplice per affrontare le cause sottostanti. C'è troppa miopia nel contesto. Le persone devono generalizzare maggiormente l'ambito delle risposte e fornire maggiori dettagli su come effettuare le correzioni.
chiarimento

30

Sostituendo maven-javadoc-pluginsolo la configurazione, non risolve il problema con mvn site(utilizzato ad es. Durante la fase di rilascio). Ecco cosa dovevo fare:

<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
Questo è un punto importante poiché la mancanza di questa impostazione nell'attivazione del plug-in del sito causerà il rilascio: eseguire per fallire mentre il rilascio: preparazione ha funzionato bene. Può essere un problema molto fastidioso da trovare e risolvere.
Peter N. Steinmetz,

Si noti che la configurazione del maven-javadoc-plugintramite la <reportPlugins>sezione del nonmaven-site-plugin è consigliata per le versioni recenti di Maven 3.
Martin Höller

@ MartinHöller Quindi, come risolvere gli errori al rilascio: eseguire la fase relativa a mavene-javadoc-plugin: 3.0.1 in modo corretto?
Vitalii Diravka,

@VitaliiDiravka Dipende dagli errori ... Si prega di porre una domanda separata per questo.
Martin Höller il

22

È possibile provare a impostare la failOnErrorproprietà (consultare la documentazione del plug-in ) su 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>

Come puoi vedere dai documenti, il valore predefinito è true.


Grazie per l'idea @Martin. Con quella proprietà almeno posso costruire e installare di nuovo il progetto, tuttavia mi manca ancora il java doc jar (ne ho bisogno per distribuirlo a Maven central). Ho aggiornato la mia domanda con i dettagli dell'esperimento.
Sergio,

Questa è stata la risposta più sufficiente per me. Volevo solo testare la costruzione durante lo sviluppo in corso quando i javadocs erano ancora incompleti.
ZachSand

17

Dal momento che dipende dalla versione di JRE che viene utilizzata per eseguire il comando maven che probabilmente non si desidera disabilitare DocLint per impostazione predefinita in pom.xml

Quindi, dalla riga di comando è possibile utilizzare l'opzione -Dadditionalparam=-Xdoclint:none .

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


3
Questo è particolarmente utile perché puoi usarlo anche Jenkins. Impostare 'Global MAVEN_OPTS' (sotto 'Configura sistema') su -Dadditionalparam=-Xdoclint:nonee tutte le build funzioneranno con Java 8.
Wilfred Hughes

mvn org.apache.maven.plugins:maven-javadoc-plugin:3.1.0:jar -DadditionalJOption=-Xdoclint:none- ha funzionato per me
Roman Khomyshynets,

10

Il nome della proprietà di configurazione è stato modificato nell'ultima versione di maven-javadoc-plugin che è 3.0.0.

Quindi il <additionalparam> non funzionerà. Quindi dobbiamo modificarlo come di seguito.

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

Vedi la doclintdocumentazione qui: maven.apache.org/plugins/maven-javadoc-plugin/…
Peter W,

Risolto per me la costruzione di OpenGrok dalla fonte github nel febbraio 19. Dovresti menzionare che la tua patch va nella pom.xmldirectory src / build del progetto. Nel mio caso tutto quello che dovevo fare era cercare maven-javadoc-plugine poi andare al <configuration></configuration>blocco già presente e aggiungere <doclint>none</doclint>. Per quanto tutto ciò sia facile una volta che si sa, il contesto qui è che sto cercando di correggere un bug diverso in OpenGrok e non ho mai usato Maven prima e non voglio dover ricorrere in un altro sottoprogetto solo per capire come applicare le soluzioni rapide.
Clearlight

4

Vorrei aggiungere alcune informazioni su altre risposte

Nel mio caso

-Xdoclint: nessuno

Non ha funzionato

Cominciamo con quello, nel mio progetto, non avevo davvero bisogno di javadoc. Solo alcuni plugin necessari avevano una dipendenza dal tempo di costruzione.

Quindi, il modo più semplice per risolvere il mio problema è stato:

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

4

A partire da maven-javadoc-plugin 3.0.0 avresti dovuto usare additionalJOption per impostare un'opzione Javadoc aggiuntiva, quindi se desideri che Javadoc disabiliti doclint, dovresti aggiungere la seguente proprietà.

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

Dovresti anche menzionare la versione di maven-javadoc-plugin come 3.0.0 o successiva.

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

3

Quindi, risparmiati qualche ora che non ho fatto e prova questo se sembra non funzionare:

 <additionalJOption>-Xdoclint:none</additionalJOption>

Il tag è cambiato per le versioni più recenti.



A volte -Xdoclintnon basta, ma sono necessari argomenti aggiuntivi. Versioni più recenti dimaven-javadoc-plugin provvedono additionalJOptionsa tale scopo, quelle precedenti no. Una soluzione alternativa è: le <additionalJOption>"-Xdoclint:none" "--allow-script-in-comments"</additionalJOption>virgolette sono importanti, altrimenti il ​​plugin le aggiunge e presuppone solo un argomento invece di due, con conseguenti wrong argserrori.
Thorsten Schöning,

Il primo funziona solo su Windows, invece su Linux: javadoc: error - Illegal package name: ""-Xdoclint:none" "--allow-script-in-comments""le virgolette esterne vengono aggiunte dall'istruzione di registrazione e non sono presenti sulla shell. Immagino che il problema sia quello su Windowsjavadoc viene eseguito cmd.exe, che analizza una stringa di grandi dimensioni come riga di comando e divide quella additionalJOptioncome previsto. Su Linux gli arg vengono passati direttamente al processo direttamente e additionalJOptionvengono passati come un argomento, portando all'errore.
Thorsten Schöning l'

Secondo Process Monitor , cmd.exenon viene utilizzato. Java molto probabilmente crea semplicemente una grande riga di comando e la passa a CreateProcess, in modo che venga analizzata da Windows come previsto: Dividere args negli spazi mentre onora le virgolette.
Thorsten Schöning l'

3

Aggiunto di seguito

JAVA_TOOL_OPTIONS=-DadditionalJOption=-Xdoclint:none

Nel lavoro di Jenkins:

Configurazione> Ambiente di compilazione> Inietti variabili di ambiente nel processo di generazione> Contenuto proprietà

Risolto il mio problema di creazione del codice tramite Jenkins Maven :-)


Questo funziona con maven-javadoc-plugin 2.4 ma a partire dalla 2.5 (e fino alla 3.0.0), ciò causa un errore: "Codice di uscita: 1 - javadoc: errore - flag non valido: -Xdoclint: none". Quindi la soluzione è fragile.
Akom,

1
Quando si utilizza questo con mvn release:performla sintassi deve essere mvn release:perform -Darguments="-Dmaven.javadoc.skip=true".
PatS,

2

Non sono sicuro che questo possa aiutare, ma anche di recente ho affrontato lo stesso identico problema con la versione oozie-4.2.0 . Dopo aver letto le risposte sopra ho appena aggiunto l'opzione Maven tramite riga di comando e ha funzionato per me. Quindi, sto solo condividendo qui.

Sto usando Java 1.8.0_77 , non ho provato con Java 1.7

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


1

Per ignorare i tag mancanti @parame i @returntag, è sufficiente disabilitare il missing gruppo doclint . In questo modo, javadoc verrà comunque verificato per problemi di sintassi e di livello superiore:

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

Si noti che questo è per plugin versione 3.0 o successiva.


0

Sono un po 'in ritardo alla festa, ma sono stato costretto a cercare una soluzione alternativa, sono finito qui e poi l'ho trovato.

Ecco cosa funziona per me: -

export JAVA_TOOL_OPTIONS=-DadditionalJOption=-Xdoclint:none

E poi avvia la tua build Maven, qualsiasi build di distribuzione Linux ecc. La cosa bella è che non richiede la modifica dei file di configurazione di Maven - non potevo farlo poiché il mio obiettivo era quello di ricostruire un sacco di pacchetti rpm Centos , quindi ho dovuto andare davvero in profondità.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.