在gradle中将参数传递给编译器和javadoc

Dal*_*vak 7 java javadoc javac gradle

我正在尝试将Gradle作为现有项目的替代构建系统.该项目的使用sun.misc.Unsafe会导致像这样的警告:

warning: Unsafe is internal proprietary API and may be removed in a future release
import sun.misc.Unsafe; 
Run Code Online (Sandbox Code Playgroud)

要禁止此警告-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')
}
Run Code Online (Sandbox Code Playgroud)

当然,必须有一种更为优雅的方式,我不知道如何实现这一目标.

这里(https://gist.github.com/3772416)是一个更完整的示例,附带一个ant脚本和一个导致问题的示例类.

谢谢

我正在运行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
Run Code Online (Sandbox Code Playgroud)

目前看来这是一个合理的worakround抑制这些特殊的警告.请参阅 - http://forums.gradle.org/gradle/topics/passing_arguments_to_compiler_and_javadoc?rfm=1

Pet*_*ser 2

关于 Javadoc,以下内容可能有效:

javadoc.options.jflags "-XDignore.symbol.file"
Run Code Online (Sandbox Code Playgroud)

关于 Java 编译,最好知道最近的 Gradle 版本(例如 1.2)是否需要options.fork = true以及 仍然需要。如果是,请在http://forums.gradle.orgoptions.forkOptions.executable = 'javac'提交问题。