2012-09-23 11 views
7

Sto provando a fornire Gradle come un sistema di generazione alternativo su un progetto esistente. Tale progetto si avvale di sun.misc.Unsafe che porta ad avvertimenti come questo:Passare argomenti a compilatore e javadoc in gradle

warning: Unsafe is internal proprietary API and may be removed in a future release 
import sun.misc.Unsafe; 

Per sopprimere questo avvertimento -XDignore.symbol.file viene passato come argomento a javac e javadoc nello script ant corrente.

Per sopprimere questi avvisi in Gradle ho dovuto ricorrere a quelli che ritengo siano hack "sporchi" con cui non mi trovo a mio agio.

apply plugin: 'java' 

compileJava { 
    // I only managed to get this working when I forked 
    // and passed 'javac' as an executable 
    options.compilerArgs << '-XDignore.symbol.file' 
    options.fork = true 
    options.forkOptions.executable = 'javac' 
} 


javadoc { 
    // These get ignored 
    // options.addStringOption('XDignore.symbol.file', null) 
    // options.addStringOption('XDignore.symbol.file') 

    // This one fails the build - I am assuming it's trying to parse '' 
    // options.addStringOption('XDignore.symbol.file') 

    // This works, but it's an ugly hack 
    options.addStringOption('XDignore.symbol.file', '-quiet') 
} 

Sicuramente ci deve essere un modo più elegante che non conosco per raggiungere questo obiettivo.

Qui (https://gist.github.com/3772416) è un esempio più completo con uno script ant antispam e una classe di esempio che causa il problema.

Grazie

Sono in esecuzione Gradle 1,1

------------------------------------------------------------ 
Gradle 1.1 
------------------------------------------------------------ 

Gradle build time: Tuesday, 31 July 2012 13:24:32 o'clock UTC 
Groovy: 1.8.6 
Ant: Apache Ant(TM) version 1.8.4 compiled on May 22 2012 
Ivy: 2.2.0 
JVM: 1.7.0_07 (Oracle Corporation 23.3-b01) 
OS: Linux 3.2.0-30-generic amd64 

Sembra che questo è un worakround ragionevole in questo momento per la soppressione di queste avvertenze particolari. Vedi - http://forums.gradle.org/gradle/topics/passing_arguments_to_compiler_and_javadoc?rfm=1

+1

Si prega di indicare sempre la versione Gradle. –

+0

Ho aggiunto le informazioni sulla versione come suggerito –

risposta

2

Per quanto riguarda Javadoc, il seguente potrebbe funzionare:

javadoc.options.jflags "-XDignore.symbol.file" 

Per quanto riguarda la compilazione Java, sarebbe bene sapere se options.fork = true e options.forkOptions.executable = 'javac' sono ancora necessarie con le versioni più recenti Gradle (ad esempio 1,2). In caso affermativo, si prega di presentare un problema al numero http://forums.gradle.org.

+0

Ho provato a utilizzare 'jFlags' e ottenuto un'opzione' Non riconosciuta: -XDignore.symbol.file' Ho aggiornato a Gradle 1.2 e ho ancora bisogno di entrambi 'options.fork = true' e 'options.forkOptions.executable = 'javac''. Ho anche provato jFlags con 1.2 e ho ottenuto lo stesso risultato di 1.1 Io solleverò il problema sul forum di Gradle. Grazie per l'aiuto. –