Gradle:未能应用插件[id';groovy';]

Gradle:未能应用插件[id';groovy';],gradle,groovy,robospock,Gradle,Groovy,Robospock,当应用我自己的自定义插件(反过来应用groovy(plugin)时,它会失败,未能应用插件[id'groovy'],这是由java.lang.IllegalStateException:model'tasks'已完成从org.gradle.model.internal.registry.DefaultModelRegistry.assertNotFinalized 是否无法从另一个插件应用groovy?或者我在这里错过了什么 应用我的插件的项目: buildscript { reposi

当应用我自己的自定义插件(反过来应用groovy(plugin)时,它会失败,
未能应用插件[id'groovy']
,这是由
java.lang.IllegalStateException:model'tasks'已完成
org.gradle.model.internal.registry.DefaultModelRegistry.assertNotFinalized

是否无法从另一个插件应用
groovy
?或者我在这里错过了什么

应用我的插件的项目:

buildscript {
    repositories {
        mavenCentral()
        maven {
            url file( '../../maven-deploy' )
        }
    }
    dependencies {
        // will be loaded from maven-deploy, not mavenCentral().
        classpath 'se.toxbee.robospock:gradle-plugin-robospock:0.1.0'
    }
}

apply plugin: 'robospock'
def applyGroovy( RoboSpockConfiguration cfg ) {
    def p = cfg.project
    if ( !p.plugins.hasPlugin( 'groovy' ) ) {
        p.apply plugin: 'groovy'
    }
}
以及应用groovy的代码:

buildscript {
    repositories {
        mavenCentral()
        maven {
            url file( '../../maven-deploy' )
        }
    }
    dependencies {
        // will be loaded from maven-deploy, not mavenCentral().
        classpath 'se.toxbee.robospock:gradle-plugin-robospock:0.1.0'
    }
}

apply plugin: 'robospock'
def applyGroovy( RoboSpockConfiguration cfg ) {
    def p = cfg.project
    if ( !p.plugins.hasPlugin( 'groovy' ) ) {
        p.apply plugin: 'groovy'
    }
}
堆栈跟踪:

吉特回购协议: (此处的README.md不准确,请勿阅读…)

groovy的应用发生在afterEvaluate闭包中,这可能相关吗


如果我在失败行之前添加
p.apply插件:“eclipse”
,它不会因为eclipse而失败,因此一般来说应用插件是不被禁止的。

这似乎是因为
afterEvaluate
-当groovy插件的应用程序移出该闭包但仍在插件中时,它工作正常


然而,我不太清楚为什么会这样,只是事实确实如此。任何知道的人都可以自由编辑我的答案或发表评论。

这将根据Gradle 2.2中Luke Daley@Gradle Core Dev的规定进行修复,请参见: