2012-09-23 13 views
7

Próbuję zapewnić Gradle jako alternatywny system kompilacji istniejącego projektu. Projekt ten wykorzystuje sun.misc.Unsafe co prowadzi do ostrzeżeń, takich jak ten:Przekazywanie argumentów kompilatorowi i javadoc w gradle

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

Aby stłumić to ostrzeżenie -XDignore.symbol.file jest przekazywana jako argument do javac i javadoc w bieżącym skrypcie mrówek.

Aby stłumić te ostrzeżenia w Gradle, musiałem uciekać się do tego, co uważam za "brudne" hacki, z którymi nie jestem zbyt zadowolony.

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') 
} 

Z pewnością musi istnieć bardziej elegancki sposób, którego nie znam, aby to osiągnąć.

Tutaj (https://gist.github.com/3772416) jest bardziej kompletny przykład z towarzyszącym skryptem ant i przykładową klasą, która powoduje problem.

Dzięki

Używam 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 

Wydaje się, że jest to rozsądne worakround w tej chwili do tłumienia tych szczególnych ostrzeżeń. Patrz - http://forums.gradle.org/gradle/topics/passing_arguments_to_compiler_and_javadoc?rfm=1

+1

Proszę zawsze podać wersję Gradle. –

+0

Dodałem informacje o wersji zgodnie z zaleceniami. –

Odpowiedz

2

chodzi Javadoc dodaje może działać:

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

chodzi o kompilację Java, dobrze byłoby wiedzieć, czy options.fork = true i options.forkOptions.executable = 'javac' są nadal wymagane z ostatnich wersji Gradle (np 1.2). Jeśli tak, zgłoś problem pod numerem http://forums.gradle.org.

+0

Próbowałem użyć 'jFlags' i otrzymałem opcję' Nierozpoznany: -XDignore.symbol.file' Zaktualizowałem do wersji Gradle 1.2 i nadal potrzebuję obu opcji 'options.fork = true' i 'options.forkOptions.executable = 'javac''. Próbowałem też jFlags z 1.2 i otrzymałem taki sam wynik jak przy 1.1 . Poruszę problem na forum Gradle. Dzięki za pomoc. –