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

标签 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'

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

堆栈跟踪:http://pastebin.com/ikXJTM67

git仓库:https://github.com/Centril/gradle-plugin-robospock
(此处的README.md不准确,请不要阅读...)

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

如果我在失败行之前添加p.apply plugin: 'eclipse',它不会因 eclipse 而失败,因此一般不禁止应用插件。

最佳答案

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

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

关于gradle - Gradle:无法应用插件[id 'groovy'],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26271951/

相关文章:

spring - OpenApiGenerate后queryDsl的Spring Gradle任务失败

iphone - apns服务问题

java - 无法从 Groovy 调用 Web 服务

java - 使用Spock和Robospock进行单元测试以创建SQLite数据库

java - 如何确定Gradle中的源目录优先级?

android - 基于构建类型和风格的 Gradle 依赖关系

java - Android Studio:“找不到声明去”

groovy - 如何将 bool 值传递给具有变量名的方法

java - 如何包含传递依赖