Groovy 原因:没有这样的属性:sourceset for class:org.gradle.api.plugins.Convention

Groovy 原因:没有这样的属性:sourceset for class:org.gradle.api.plugins.Convention,groovy,build,build-process,gradle,Groovy,Build,Build Process,Gradle,我运行了Gradle Cookbook中的代码片段 apply plugin: 'java' task "create-dirs" << { convention.sourceSets.all*.java.srcDirs*.each { it.mkdirs() } convention.sourceSets.all*.resources.srcDirs*.each { it.mkdirs() } } 应用插件:“java” 任务“创建目录”好的,对不起。我明白了

我运行了Gradle Cookbook中的代码片段


apply plugin: 'java'

task "create-dirs" << {
   convention.sourceSets.all*.java.srcDirs*.each { it.mkdirs() }
   convention.sourceSets.all*.resources.srcDirs*.each { it.mkdirs() }
}

应用插件:“java”
任务“创建目录”好的,对不起。我明白了

一定是


应用插件:“java”


任务“创建目录”该属性现在已全部删除,因此您可以按以下方式执行:

   task "create-dirs" {
        def defaultPackage = "org.akash.gradle";
        ['java', 'groovy', 'resources'].each { String dir ->
           sourceSets*."$dir".srcDirs*.each { dir1 ->
             def newDir = new File(dir1, defaultPackage);
             newDir.mkdirs();
           }
        }
   }

如果我需要编写自己的插件来创建结构,如何将结构链接到源集?
 
apply plugin: 'java'

task "create-dirs" << { sourceSets.all*.java.srcDirs*.each { it.mkdirs() } sourceSets.all*.resources.srcDirs*.each { it.mkdirs() } }
   task "create-dirs" {
        def defaultPackage = "org.akash.gradle";
        ['java', 'groovy', 'resources'].each { String dir ->
           sourceSets*."$dir".srcDirs*.each { dir1 ->
             def newDir = new File(dir1, defaultPackage);
             newDir.mkdirs();
           }
        }
   }