gpt4 book ai didi

java - 使用 Gradle/Java8 构建时存储某些类的方法参数名称

转载 作者:搜寻专家 更新时间:2023-10-30 21:12:21 25 4
gpt4 key购买 nike

跟进问题 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com