当应用我自己的自定义插件(反过来又应用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/