Ответ 1
sourceCompatibility=1.8
[compileJava, compileTestJava]*.options*.compilerArgs = ['-parameters']
Последующий вопрос к этому вопросу.
Как сохранить имена параметров метода для классов при создании с помощью Gradle (файл build.gradle)?
В соответствии с Java учебники:
Для хранения формальных имен параметров в определенном файле .class и, следовательно, включить API Reflection для получения формальных имен параметров, компиляции исходный файл с параметром -parameters компилятору javac.
Итак, как передать "-параметры" компилятору javac с помощью Gradle?
Я попробовал предлагаемое решение здесь, добавив ниже в мой файл build.gradle без везения.
apply plugin: 'java'
compileJava {
options.compilerArgs << '-parameters'
options.fork = true
options.forkOptions.executable = 'javac'
}
Я использую eclipse, и если я включу это (в Window → Preferences → Java → Compiler), он отлично работает.
Store information about method parameters (usable via reflection)
Но я предпочел бы, чтобы этот параметр был установлен моей системой сборки, поэтому я не зависим от eclipse и поэтому другие могут использовать мои файлы .jar.txt.
Я использую:
sourceCompatibility=1.8
[compileJava, compileTestJava]*.options*.compilerArgs = ['-parameters']
Чтобы сам gradle был скомпилирован с -parameters
, добавьте следующее к вашему build.gradle
:
compileJava.options.compilerArgs.add '-parameters'
compileTestJava.options.compilerArgs.add '-parameters'
Чтобы использовать gradle для создания файлов проекта Eclipse, где -parameters
установлен для javac: используйте подсказку this gradle forum post и добавьте следующее к вашему build.gradle
:
eclipseProject {
doLast {
// https://discuss.gradle.org/t/how-to-write-properties-to-3rd-party-eclipse-settings-files/6499/2
def props = new Properties()
file(".settings/org.eclipse.jdt.core.prefs").withInputStream {
stream -> props.load(stream)
}
props.setProperty("org.eclipse.jdt.core.compiler.codegen.methodParameters", "generate")
file(".settings/org.eclipse.jdt.core.prefs").withOutputStream {
stream -> props.store(stream, null)
}
}
}
(По-видимому, a) плагин gradle Eclipse не знает, как перевести опцию компилятора -parameters
в настройку .settings/org.eclipse.jdt.core.prefs
org.eclipse.jdt.core.compiler.codegen.methodParameters=generate
и b) нет стандартной задачи gradle, которая управляет любой из файлы свойств в .settings
, поэтому вам придется сворачивать свои собственные.)
Это для gradle 2.8.
После некоторых исследований по одной и той же проблеме одним из решений должно быть что-то вроде этого: https://github.com/codeborne/mobileid/blob/master/build.gradle
Добавьте это в свой build.gradle:
[compileJava, compileTestJava]*.options.collect {options ->
options.compilerArgs.add '-parameters'
}
Он работает для меня с gradle 2.4