Передача аргументов компилятору и javadoc в gradle

Я пытаюсь предоставить 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 передается в качестве аргумента javac и javadoc в текущем скрипте ant.

Чтобы подавить эти предупреждения в 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


person Dalibor Novak    schedule 23.09.2012    source источник
comment
Пожалуйста, всегда указывайте версию Gradle.   -  person Peter Niederwieser    schedule 23.09.2012
comment
Я добавил информацию о версии, как было предложено   -  person Dalibor Novak    schedule 23.09.2012


Ответы (1)


Что касается Javadoc, может работать следующее:

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

Что касается компиляции Java, было бы неплохо узнать, требуются ли options.fork = true и options.forkOptions.executable = 'javac' в последних версиях Gradle (например, 1.2). Если да, сообщите о проблеме на странице http://forums.gradle.org.

person Peter Niederwieser    schedule 23.09.2012
comment
Я пытался использовать jFlags и получил Unrecognized option: -XDignore.symbol.file. Я обновился до Gradle 1.2, и мне все еще нужны как options.fork = true, так и options.forkOptions.executable = 'javac'. Я также пробовал jFlags с 1.2 и получил тот же результат, что и с 1.1. Я подниму вопрос на форуме Gradle. Спасибо за помощь. - person Dalibor Novak; 23.09.2012