【问题标题】:Store method parameter names for some classes when building with Gradle/Java8使用 Gradle/Java8 构建时存储某些类的方法参数名称
【发布时间】:2015-05-16 21:08:44
【问题描述】:

将问题跟进this question。

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

根据Javatutorials

将形式参数名称存储在特定的 .class 文件中,因此 启用反射 API 以检索形式参数名称,编译 javac 编译器的带有 -parameters 选项的源文件。

那么如何使用 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 插件)

【问题讨论】:

    标签: java methods parameters gradle java-8


    【解决方案1】:

    要让 gradle 本身与 -parameters 一起编译,请将以下内容添加到您的 build.gradle

    compileJava.options.compilerArgs.add '-parameters'
    compileTestJava.options.compilerArgs.add '-parameters'
    

    为了使用 Gradle 生成 Eclipse 项目文件,其中为 javac 设置了 -parameters:使用来自 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 任务来操作 @ 中的任何属性文件987654331@,所以你必须自己动手。)

    这适用于 Gradle 2.8。

    【讨论】:

      【解决方案2】:
      sourceCompatibility=1.8
      [compileJava, compileTestJava]*.options*.compilerArgs = ['-parameters']
      

      【讨论】:

        【解决方案3】:

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

        将此添加到您的 build.gradle:

        [compileJava, compileTestJava]*.options.collect {options ->
            options.compilerArgs.add '-parameters'
        }
        

        它适用于我的 gradle 2.4

        【讨论】:

          猜你喜欢
          • 2015-03-20
          • 1970-01-01
          • 1970-01-01
          • 2017-11-15
          • 2022-08-12
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多