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

时间:2015-03-14 11:15:47

标签: java methods parameters gradle java-8

将问题跟进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文件。

我用:

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

3 个答案:

答案 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