2012-09-23 39 views
7

我試圖提供Gradle作爲現有項目的替代構建系統。該項目利用了sun.misc.Unsafe導致這樣一個警告:將參數傳遞給gradle中的編譯器和javadoc

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

要禁止這種警告-XDignore.symbol.file作爲當前ant腳本的參數的javac和javadoc傳遞。

爲了抑制Gradle中的這些警告,我不得不訴諸於我覺得是'骯髒'的黑客,我不太習慣。

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

當然,必須有一個更優雅的方式,我不知道要實現這一點。

這裏(https://gist.github.com/3772416)是一個更完整的示例,其中包含一個伴隨的ant腳本和一個導致問題的示例類。

感謝

我正在搖籃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 

看來,這是目前用於抑制這些特定警告合理worakround。見 - http://forums.gradle.org/gradle/topics/passing_arguments_to_compiler_and_javadoc?rfm=1

+1

請始終聲明Gradle版本。 –

+0

我已經添加了版本信息建議 –

回答

2

關於Javadoc中,以下可能的工作:

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

關於Java編譯,這將是很好的知道,如果options.fork = trueoptions.forkOptions.executable = 'javac'仍與最近搖籃版本(如1.2)要求。如果是,請在http://forums.gradle.org提交問題。

+0

我已經嘗試使用'jFlags'並得到了'無法識別的選項:-XDignore.symbol.file' 我已經升級到Gradle 1.2,我仍然需要'options.fork = true'和'options.forkOptions.executable ='javac''。我也嘗試了1.2的jFlags,並得到了與1.1相同的結果 我會在Gradle論壇上提出這個問題。 感謝您的幫助。 –