首页 > 解决方案 > 升级到 5.5.1 后出现 gradle 错误“Could not get unknown property 'srcDirs' for source set 'groovy'”

问题描述

我有一个多项目构建,我在 master 中包含了 groovy 插件,build.gradle如下所示:

plugins {
  id 'groovy'
}

但是,我的一个具有 groovy 资源的子项目正在这样做:

sourceSets {
  main { 
    java.srcDirs = []
    groovy.srcDirs += ["src/main/java", "src/main/groovy"]
  }
}

我得到一个错误:

> Could not get unknown property 'srcDirs' for source set 'groovy' of type org.gradle.api.internal.tasks.DefaultSourceSet.

我正在升级我的构建脚本以在 gradle v5.5.1 而不是 v2.13 下工作。这是以前工作的,我在子项目构建文件中有这个:

apply plugin: 'groovy'

但是从 2.13 升级到 5.5.1 后,它开始给我这个:

* What went wrong:
A problem occurred evaluating project ':mysubproj'.
> Failed to apply plugin [class 'org.gradle.api.plugins.GroovyBasePlugin']
   > Cannot change attributes of configuration ':mysubproj:apiElements' after it has been resolved

这就是为什么我认为我应该在主构建脚本中声明插件。

我在主构建脚本中的插件引用不应该让子项目知道 groovy 扩展吗?如果没有,正确的方法是什么?谢谢!

标签: gradlebuild.gradle

解决方案


问题是 Groovy 插件没有应用于子项目,您需要适当地应用它。

allprojects {
    apply plugin: 'groovy'
}

我知道过去新的插件样式不适用于子项目,这可能已经解决,如果是这样 - 使用它。

至于例外情况,当您似乎正在执行上述操作时,我需要构建脚本来为您提供建议:)


推荐阅读