Gradle:无法应用插件[id' groovy']

时间:2014-10-09 06:44:27

标签: gradle groovy robospock

在应用我自己的自定义插件时,后者又应用groovy(插件),但Failed to apply plugin [id 'groovy']java.lang.IllegalStateException: model 'tasks' is finalized引发的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的代码:

p.apply plugin: 'eclipse'

stacktrace:http://pastebin.com/ikXJTM67

git repo:https://github.com/Centril/gradle-plugin-robospock (这里的README.md不准确,不读它......)

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

如果我在失败的行之前添加{{1}},它不会因为eclipse而失败,因此不会禁止应用插件。

1 个答案:

答案 0 :(得分:0)

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

但是,我不确定为什么会这样,只是确实如此。任何知道的人都应该随时编辑我的答案或发表评论。