使用Gradle/Java8构建时,为某些类存储方法参数名称

etx*_*lpo 12 java parameters methods gradle java-8

跟进这个问题的问题.

使用Gradle(build.gradle文件)构建时,如何为类存储方法参数名称?

根据Java 教程:

要将正式参数名称存储在特定的.class文件中,从而使Reflection API能够检索形式参数名称,请使用-parameters选项将源文件编译为javac编译器.

那么如何使用Gradle 将"-parameters"传递给javac编译器?

我在这里尝试了建议的解决方案,将下面的内容添加到我的build.gradle文件中,没有运气.

apply plugin: 'java'

compileJava {
    options.compilerArgs << '-parameters'
    options.fork = true
    options.forkOptions.executable = 'javac'
}
Run Code Online (Sandbox Code Playgroud)

我正在使用eclipse,如果我启用它(在Window - > Preferences - > Java - > Compiler中),它可以正常工作.

Store information about method parameters (usable via reflection)
Run Code Online (Sandbox Code Playgroud)

但我宁愿让我的构建系统设置这个设置,所以我不依赖于eclipse,所以其他人可以使用我的buildt .jar文件.

我用:

  • Eclipse 4.4.2
  • Gradle IDE 3.6.4(eclipse插件)

小智 0

经过对同一问题的一些研究后,一种解决方案是制作如下内容: https: //github.com/codeborne/mobileid/blob/master/build.gradle

将其添加到您的 build.gradle 中:

[compileJava, compileTestJava]*.options.collect {options ->
    options.compilerArgs.add '-parameters'
}
Run Code Online (Sandbox Code Playgroud)

它适用于我的 gradle 2.4