【问题标题】:Passing arguments to compiler and javadoc in gradle在 gradle 中将参数传递给编译器和 javadoc
【发布时间】:2012-09-15 07:27:16
【问题描述】:

我正在尝试提供 Gradle 作为现有项目的替代构建系统。该项目使用了sun.misc.Unsafe,这会导致类似这样的警告:

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 脚本和一个导致问题的示例类。

谢谢

我正在运行 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

目前看来,这是抑制这些特定警告的合理方法。见-http://forums.gradle.org/gradle/topics/passing_arguments_to_compiler_and_javadoc?rfm=1

【问题讨论】:

  • 请始终说明 Gradle 版本。
  • 我已经按照建议添加了版本信息

标签: java javadoc gradle javac


【解决方案1】:

关于 Javadoc,以下可能有效:

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

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

【讨论】:

  • 我已经尝试使用jFlags 并得到了Unrecognized option: -XDignore.symbol.file 我已经升级到Gradle 1.2,我仍然需要options.fork = trueoptions.forkOptions.executable = 'javac'。我还尝试了 1.2 的 jFlags 并得到了与 1.1 相同的结果,我将在 Gradle 论坛上提出这个问题。感谢您的帮助。
猜你喜欢
  • 2015-10-29
  • 1970-01-01
  • 1970-01-01
  • 2011-05-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多