跟进问题 this问题。
在使用 Gradle 构建时(build.gradle 文件)如何存储类的方法参数名称?
根据 Java tutorials :
To store formal parameter names in a particular .class file, and thus enable the Reflection API to retrieve formal parameter names, compile the source file with the -parameters option to the javac compiler.
那么如何使用 Gradle 将“-parameters”传递给 javac 编译器?
我尝试了建议的解决方案 here ,通过将以下内容添加到我的 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,这样其他人就可以使用我的 buildt .jar 文件。
我使用:
- eclipse 4.4.2
- Gradle IDE 3.6.4(eclipse 插件)
最佳答案
要让 gradle 本身使用 -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)
}
}
(显然 a)Gradle Eclipse 插件不知道如何将编译器选项 -parameters
转换为 .settings/org.eclipse.jdt.core.prefs
设置 org.eclipse.jdt.core.compiler.codegen.methodParameters=generate
和 b) 没有标准的 Gradle 任务可以操作 .settings
中的任何属性文件,所以你必须自己动手。)
这是针对 Gradle 2.8 的。
关于java - 使用 Gradle/Java8 构建时存储某些类的方法参数名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29048258/