初学gradle,一切都还在摸索的过程中。今天刚刚试图将之前基于ant + ivy的一个小项目转移到gradle下,结果在和sonar集成时出现问题。
gradle中支持sonar的方式很简单,gradle提供了一个sonar的plugin,简单的在build.gradle中配置一下就好了:
Java代码
apply plugin: 'sonar'
sonar {
serverUrl = "http://192.168.0.40:9000"
globalProperty "sonar.jdbc.url", "jdbc:mysql://192.168.0.40:3306/sonar?useUnicode=true&characterEncoding=utf8"
globalProperty "sonar.jdbc.driverClassName", "com.mysql.jdbc.Driver"
globalProperty "sonar.jdbc.username", "sonar"
globalProperty "sonar.jdbc.password", "sonar"
}
结果非常意外失败了!一个无耻的失败: Plugin with id 'sonar' not found !
很是晕倒,sonar的plugin是gradle官方自带的,居然也能not found!gradle --version 看了一下自己当前的版本: Gradle 1.0-milestone-1。印象中是最近才更新的,跑gradle官网看了一下,milestone-1 是3月份的版本,现在最新的已经是1.0-milestone-3了。
猜想是1.0-milestone-1的bug,于是立即下载安装,将本地gradle环境更新到1.0-milestone-3.再次运行gradle sonar,上述sonar plugin not found的错误消失。晕倒,这种无聊的bug也能在milestone 中出现。
继续,上面的bug消失之后,gradle sonar命令依然失败,错误消息显示,http访问地址http://192.168.0.40:9000/batch 时失败。打开浏览器输入这个地址,发现的确不能打开。http://192.168.0.40:9000是我安装的sonar的地址,感觉是gradle试图连接sonar服务器拿点什么东西的样子,sonar服务器却没有这个东东。
刚刚从gradle版本错误中被教育的我迅速反应出来,最新版本的gradle,应该支持的是新版本的sonar,我的sonar服务器可能版本太旧了。看了一下,发现果然,我本地的sonar版本是2.1,sonar官网已经更新到2.7! 立即下载重新安装sonar2.7版本,再次尝试gradle sonar命令,一切正常,gradle顺利完成和sonar的集成!
看来保持与时俱进,及时更新到新版本还是有必要的。