我正在尝试最近在 gradle 1.5 中发布的新 Sonar Runner 任务。我想做的是能够使声纳运行器任务依赖于另一个任务,以便我可以为这个项目正确设置声纳属性(即 sonar.sources、sonar.binaries、sonar.libraries、sonar.java.source , sonar.java.target)。
具体来说,我正在使用一个名为 bnd 的 osgi 构建工具,它将在执行 ant init 任务时提供这些值(请注意,虽然我包含了默认的 bnd build.xml 文件,但我的完整构建实际上是使用 gradle 完成的)。
我想我可以通过这样做来自定义声纳运行器任务(这是一个多模块构建):
subprojects {
sonarRunner.dependsOn init
}
最终添加这样的东西(根据我对 bnd ant 变量的理解):
subprojects {
sonarRunner {
sonarProperties {
property "sonar.java.source", ant.property["project.sourcepath"]
property "sonar.java.target", ant.property["project.output"]
property "sonar.sources", ant.property["project.allsourcepath"]
property "sonar.libraries", ant.property["project.buildpath"]
}
}
sonarRunner.dependsOn init
}
不幸的是,当我尝试添加dependsOn时出现错误:
* What went wrong:
A problem occurred evaluating root project 'myproject'.
> Could not find property 'init' on project ':com.company.myproject.mymodule'.
如果我尝试让 sonarRunner 依赖于 gradle 任务,我会收到以下错误:
* What went wrong:
A problem occurred evaluating root project 'myproject'.
> Could not find method dependsOn() for arguments [task ':gradletask'] on org.gradle.api.sonar.runner.SonarRunnerExtension_Decorated@c4d7c0c.
我在这里遗漏了一些明显的东西吗?如果有人能指出我正确的方向,那将是一个很大的帮助。