鉴于在gradle中注册的扩展名为foo:
class Foo {
Project proj
void setProject( Project project) {
this.proj = project
}
void setProject( String project) {
// do stuff
}
}
我如何获得:
foo {
project = ':random-project'
}
由于GroovyCastException,调用字符串setter而不是在装饰的扩展对象的setProperty中失败?
此问题的原因来自此问题:https://github.com/Centril/gradle-plugin-robospock/issues/5
答案 0 :(得分:0)
由于我还没有看到更好的答案,我试图提出一个可能的替代方案。
如果您可以在proj
中将String
的类型保持为Foo
,并且实际使用Foo
类的实例,请使用{{1}查找项目您的插件可用的findProject
对象上的方法。
project
您可以在class FooPlugin implements Plugin<Project> {
// ...
void apply(Project project) {
// ...
project.findProject(fooInstance.proj)
}
}
或findProject
方法上找到更多信息,以便按路径at API Documentation找到项目
可能有一种方法可以访问Foo类中的当前Project实例,然后您可以使用重载的setter。
答案 1 :(得分:0)
这适用于Gradle版本2.0及更高版本,这可能是由于从Groovy 1.x迁移到2.x.如果可能的话,我建议使用更高版本的Gradle。
答案 2 :(得分:0)