# 前言
上一篇文章学习了Sonar,这篇文章来讲解sonar runner。区别在于sonar runner是将分析的数据上传到数据库中,而sonar则是采用各种方法将数据库中数据组织成不同的形式展现给用户。所以sonar依赖于sonar runner,没有数据也就无法展示。
# 知识点
## 1.sonar的版本与兼容性
gradle默认使用的Sonar Runner版本是2.3的,该版本支持Sonar的版本3.0以及更高。但是如果你非要支持3.0以前的(还是不要有这种事发生吧,勇敢的拥抱新的东西不好么),那就需要自己配置了。
## 2.plugin标识
~~~
apply plugin : 'sonar-runner'
~~~
## 3.如何执行
~~~
gradle sonarRunner
~~~
## 4.Sonar Runner的配置
与sonar的配置项差不多,只是配置方式不一样而已,这里配置的都是以key/value的形式,而在sonar中是以特殊的属性名赋值的方式。
~~~
<pre name="code" class="java">sonarRunner {
sonarProperties {
property "sonar.host.url", "http://localhost:9002/"
property "sonar.jdbc.url", "jdbc:mysql://localhost:3306/sonar"
property "sonar.jdbc.driverClassName", "com.mysql.jdbc.Driver"
property "sonar.jdbc.username", "sonar"
property "sonar.jdbc.password", "sonar"
}
}
~~~
## 5.版本配置
在第1节中讲了sonar runner默认版本是2.3,当然你可以修改,通过下面语句修改。
~~~
sonarRunner {
toolVersion = '2.3' // default
}
~~~
## 6.多项目的构建
这里也和sonar类似,我就直接贴配置方式,不再阐述了。
有全局和私有2种配置,可以为每个子项目配置共同属性,也可以单独拿出来为每一个子项目配置特殊的属性。
为每个项目都设置字符编码为UTF-8
~~~
subprojects {
sonarRunner {
sonarProperties {
property "sonar.sourceEncoding", "UTF-8"
}
}
}
~~~
为project1设置语言为groovy
~~~
project(":project1") {
sonarRunner {
sonarProperties {
property "sonar.language", "grvy"
}
}
}
~~~
为project2设置跳过质量管理。
~~~
project(":project2") {
sonarRunner {
skipProject = true
}
}
~~~
## 7.自定义sourcesets
sonar也有这些配置,so一笔带过。(为啥都配置呢)
~~~
sonarRunner {
sonarProperties {
properties["sonar.sources"] += sourceSets.custom.allSource.srcDirs
properties["sonar.tests"] += sourceSets.integTest.allSource.srcDirs
}
}
~~~
## 8.不止是Java
same as Sonar,就是可以分析其他的语言。上面已经讲过了如何设置语言了。
## 9.控制执行sonar runner进程
sonar runner和test进程一样,也是一个单独的进程。你可以设置该进程的内存以及系统属性。想要查看都有哪些可以设置的属性,可以在api中查看JavaForkOptions类。
~~~
sonarRunner {
forkOptions {
maxHeapSize = '512m'
}
}
~~~
- 前言
- gradle学习(1)-helloworld
- gradle学习(2)-基础语法
- gradle学习(3)-基础认识
- gradle学习(4)-构建java项目
- gradle学习(5)-创建eclipse项目
- gradle学习(6)-依赖管理
- gradle学习(7)-groovy
- gradle学习(8)-gradle的命令行
- gradle学习(9)-获取build相关信息
- gradle学习(10)-gui
- gradle学习(11)-编写构建脚本
- gradle学习(12)-groovy一些基础语法
- gradle学习(13)-有的没的
- gradle学习(14)-任务
- gradle学习(15)-任务
- gradle学习(16)-操作文件
- gradle学习(17)-被合并的ant
- gradle学习(18)-ant的属性
- gradle学习(19)-log系统
- gradle学习(20)-详解java插件
- gradle学习(21)-在eclipse中构建java项目
- gradle复习(1)-2种定义任务方式的区别
- gradle复习(2)-eclipse中添加依赖jar包
- gradle复习(3)-在gradle项目中使用TestNG
- gradle复习(4)-Cannot find System Java Compiler
- gradle复习(5)-Test remote debug
- gradle复习(6)-深入Jacoco
- gradle复习(7)-深入Jacoco
- gradle复习(8)-Task中行为
- gradle学习(22)-Sonar
- gradle学习(23)-Sonar runner