将问题跟进this问题。
使用Gradle(build.gradle文件)构建时,如何为类存储方法参数名?
根据Java tutorials:
将正式参数名称存储在特定的.class文件中,从而 启用Reflection API以检索形式参数名称,编译 带有javac编译器的-parameters选项的源文件。
那么如何通过" -parameters"到使用Gradle的 javac 编译器?
我尝试了建议的解决方案here,将以下内容添加到我的 build.gradle 文件中,但没有运气。
apply plugin: 'java'
compileJava {
options.compilerArgs << '-parameters'
options.fork = true
options.forkOptions.executable = 'javac'
}
我正在使用eclipse,如果我启用它(在Window - &gt; Preferences - &gt; Java - &gt; Compiler中),它可以正常工作。
Store information about method parameters (usable via reflection)
但我宁愿让我的构建系统设置这个设置,所以我不依赖于eclipse,所以其他人可以使用我的buildt .jar文件。
我用:
答案 0 :(得分:2)
要使用-parameters
进行编译,请将以下内容添加到build.gradle
:
compileJava.options.compilerArgs.add '-parameters'
compileTestJava.options.compilerArgs.add '-parameters'
为了使用Gradle生成为javac设置-parameters
的Eclipse项目文件:使用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)
}
}
}
(显然是一个)Gradle Eclipse插件不知道如何将编译器选项-parameters
转换为.settings/org.eclipse.jdt.core.prefs
设置org.eclipse.jdt.core.compiler.codegen.methodParameters=generate
和b)那里没有标准的Gradle任务操作.settings
中的任何属性文件,因此您必须自己动手。)
这适用于Gradle 2.8。
答案 1 :(得分:1)
sourceCompatibility=1.8
[compileJava, compileTestJava]*.options*.compilerArgs = ['-parameters']
答案 2 :(得分:0)
在针对同一问题进行一些研究之后,一种解决方案就是做出类似这样的事情:https://github.com/codeborne/mobileid/blob/master/build.gradle
将此添加到build.gradle:
[compileJava, compileTestJava]*.options.collect {options ->
options.compilerArgs.add '-parameters'
}
它适用于gradle 2.4