2016-01-19 17 views
14

aggiornamento generale, dopo alcune ricerche
Voglio costruire il mio progetto in esecuzione gradle 2.0 con gradle build nella console vengo attaccato alla generazione JavaDoc. Sto usando Java 8, precisamente jdk1.8.0_66 e jre1.8.0_66. Ora, quando io voglio costruire il mio progetto digitando gradle build nel mio PowerShell ottengo questo errore:Disabilita tutto JavaDoc in Gradle

5 errors 
10 warnings 
:my-subproject1:javadoc FAILED 
    FAILURE: Build failed with an exception. 

* What went wrong: 
Execution failed for task ':my-subproject1:javadoc'. 
> Javadoc generation failed. 

Un errore di esempio e un avvertimento del campione:

C:\some\long\path\MyClass.java:37: error: @param name not found 
     * @param appCode 
       ^
C:\some\long\path\MyOtherClass.java:37: warning: no description for @param 
     * @param appCode 

Se rendo invalido uno dei miei sottoprogetti utilizzando tasks.findByPath(":my-subproject:javadoc").enabled = false in il mio file build.gradle ottengo lo stesso errore per il sottoprogetto successivo.
La ricerca ha dimostrato che non sono solo con il mio problema; Java 8 sembra essere molto rigido con JavaDoc. Ciò è dovuto al nuovo doclint for Javadoc. Trovato su this site. Fornisce anche una soluzione per Maven e Gradle. Ma per me non funziona, un altro answer I got non funziona neanche. I miei tentativi di risolvere sembrare che questo adesso nel mio build.gradle per questo sottoprogetto:

//Solution by the second link 
allprojects { 
    tasks.withType(Javadoc).all { enabled = false } 
} 
//Solution by the first link 
if (JavaVersion.current().isJava8Compatible()) { 
    allprojects { 
     tasks.withType(Javadoc) { 
      options.addStringOption('Xdoclint:none', '-quiet') 
     } 
    } 
} 


dependencies{ 
    compile project(':my-subproject1') 
    compile project(':my-subproject2') 
    compile project(':my-subproject3') 
} 

Qualcuno sa come risolvere questo problema o c'è un'altra soluzione?

Edit:

C:. | Root 
├───build.gradle 
│ └───2.0 
│  └───taskArtifacts 
├───buildSrc 
│ ├───.gradle 
│ │ ├───2.0 
│ │ │ └───taskArtifacts 
│ │ └───noVersion 
│ │  └───buildSrc 
│ ├───build 
│ │ ├───classes 
│ │ │ └───main 
│ │ ├───dependency-cache 
│ │ ├───libs 
│ │ └───tmp 
│ └───src 
│  └───main 
│   └───java 
│    └───com 
│     └───custom 
│      └───gradle 
│       └───util 
├───my-subproject1 
├───my-subproject2 
├───my-subproject3 
│ ├───my-sub-subproject 
│ ├───my-current-directory | Magic happens here 
│ │ ├───some.package.identifier 
│ │ │ ├───.clover 
│ │ │ ├───.settings 
│ │ │ ├───bin 
│ │ │ │ └───package 
│ │ │ │  └───subpackage 
│ │ │ └───buil.gradle | This should build my subproject 

Soluzione: Metti nel build.gradle root file.

risposta

34

Se si dispone di uno script di generazione del progetto root, è possibile disattivare tutte le attività dei sottoprogetti in base al tipo. Nel tuo caso, in base al tipo Javadoc, come:

subprojects { 
    tasks.withType(Javadoc).all { enabled = false } 
} 
+0

Beh, è ​​una specie di sotto-progetto che avrei dovuto costruire senza il resto, ho solo le dipendenze sulla stessa livello, ma il suggerimento finora non è male :) –

+0

anche quando si cambia 'sottoprogetti' ->' allprojects' non funziona ... –

+0

Hm, potresti fornire un esempio della struttura del tuo progetto, con la posizione di la cartella roo, il file settings.gradle e alcuni dei file build.gradle? 'sottoprogetti' dovrebbero essere usati nello script root build.gradle – Stanislav

10

mi sono imbattuto in questo come bene e dopo aver scavato attraverso il codice sorgente di Gradle ho trovato una soluzione che funziona in Gradle 2.9.

Invece di options.addStringOption('Xdoclint:none', '-quiet') provare options.addBooleanOption('Xdoclint:none', true). Dovrebbe passare correttamente l'opzione -Xdoclint:none alla chiamata javadoc sottostante e ignorare gli errori mentre sta ancora producendo l'output Javadoc. L'ho fatto direttamente nella dichiarazione di attività javadoc, ma probabilmente funzionerebbe usando il metodo allprojects che hai provato sopra.

+0

Per essere precisi, questo non "ignorerà" gli errori. Li farà retrocedere agli avvertimenti. Quindi, se non riesci a costruire gli avvisi, come questo https://stackoverflow.com/a/33153700/1650674, questo fallirà comunque la compilazione. – tir38

2

Questo è quanto ho reso invalido - nel mio mio file build.gradle ho aggiunto:

tasks.withType(Javadoc).all { enabled = false } // non ascii characters make it crash 
Problemi correlati