gpt4 book ai didi

java - 使用 Map 变量扩展 sourceSets 时,Gradle 出现奇怪的行为

转载 作者:行者123 更新时间:2023-12-02 12:25:38 26 4
gpt4 key购买 nike

我们正在开发一个 Java 项目,该项目能够在构建时检测(更改)类文件。我们定义了一个 Gradle 任务,它调用基于 java 的 Ant 任务,该任务采用 inputDir (例如 build/classes)和 outputDir (例如 build/classes-instrumented)以及可能的其他参数。编译后,主类文件和测试类文件将分别调用该任务。由于“普通”java sourceSet 不太适合,我们的第一个想法是实现我们自己的 sourceSet,但找不到简单的方法。一个合理的替代方案,类似于 ANTLR 等,似乎是额外的变量。由于我需要几个,所以我去找了一张 map 。

sourceSets.all { ext.instrumentation = [:] }

sourceSets.all {
instrumentation.inputDir = null
instrumentation.outputDir = null
instrumentation.classPath = null
}

def postfix = '-instrumented'

下面您将看到我们如何初始化变量。

sourceSets {
main {
instrumentation.inputDir = sourceSets.main.output.classesDir
instrumentation.outputDir = instrumentation.inputDir + postfix
instrumentation.classPath = sourceSets.main.output + configurations.compile
}

test {
instrumentation.inputDir = sourceSets.test.output.classesDir
instrumentation.outputDir = instrumentation.inputDir + postfix
}
}

但是失败,并显示“无法在根目录上找到参数 [build_f2cvmoa3v4hnjefifhpuk6ira$_run_closure5_closure23@12a14b74] 的方法 main()”项目“延续”。”

我们正在使用 Gradle 2.1

我有以下问题:

  1. 知道第一个失败的原因吗?
  2. 额外的变量是解决问题的合理解决方案吗?

非常感谢您的帮助

最佳答案

解决方案:安装最新版本。

我遇到了同样的问题,我阅读了 gradle 3 的 gradle 文档,但安装了 gradle 2.7。

  • 检查了 gradle 版本 2.7
  • 然后阅读 gradle 2.7 文档 https://docs.gradle.org/2.7/userguide/tutorial_java_projects.html#N103CD ,但在该版本的 java 插件中没有找到有关 sourceSet 的信息
  • 已安装 gradle 3 --> 问题已解决

关于java - 使用 Map 变量扩展 sourceSets 时,Gradle 出现奇怪的行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25876798/

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