我正在嘗試最近在Gradle 1.5中發佈的新Sonar Runner任務。我想要做的是能夠使聲納運動員任務依賴於另一項任務,以便我可以正確設置該項目的聲納屬性(即sonar.sources,sonar.binaries,sonar.libraries,sonar.java.source ,sonar.java.target)。使聲納轉輪Gradle任務取決於我的任務之一
具體來說,我使用了一個名爲bnd的osgi構建工具,它將在執行ant init任務時提供這些值(注意,雖然我包含默認的bnd build.xml文件,但我的完整構建實際上是使用gradle完成的) 。
我想我能夠通過這樣來定製聲納亞軍任務(這是一個多模塊構建):
subprojects {
sonarRunner.dependsOn init
}
最後加入這樣的事情(從我瞭解的BND螞蟻變量):
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 [email protected]0c.
我失去的東西在這裏很明顯?如果有人能指引我正確的方向,這將是一個很大的幫助。
在Gradle端聲明源目錄等可能會更好。在這種情況下,「sonar-runner」插件將自動使用正確的值。請注意,Gradle還通過它的'osgi'插件支持'bnd'。 – 2013-04-08 07:35:35
使用單獨的文件來指定依賴關係,無論是常春藤,maven還是bnd文件(我在bnd文件中指定我的依賴關係,這使我可以在Eclipse中使用bndtools),ide集成更容易。我認爲gradle osgi插件類似於bnd maven插件 - 它只使用bnd的清單創建功能。 – Gareth 2013-04-11 22:52:31