sonarqube+jacoco+gradle
sonarqube :代码质量管理工具
jacoco:覆盖率工具
gradle:构建继承环境
step1.安装sonarqube服务器
网上有很多基础教程,教如何创建;
但需要强调,mysql版本必须是小于8的,因为sonarqube中使用了mysql8的关键字作为表明(groups);
step2.配置build.gradle文件
期初项目是无组织的,所以文件夹并没有按照标准目录构建。因此后续的配置中包含了许多指定文件夹的操作。
2.1)build.gradle 文件
配置重点:①指定插件jacoco ②指定sonarqube.gradle配置文件③指定test&src测试文件位置
apply plugin: 'java'
apply plugin: 'eclipse'
apply plugin: 'maven'
archivesBaseName="xxx"
def releaseVersion = "8.0.0-alpha01.P002"
group = "cn.xxx.xxx.xxx"
version = releaseVersion
artifacts {
archives jar
}
repositories {
mavenCentral()
maven { url "http://maven.aliyun.com/nexus/content/groups/public/" }
}
sourceSets {
main {
resources {
srcDir 'src'
}
java{
srcDir 'src'
}
}
test{
resources {
srcDir 'src'
}
java{
srcDir 'src'
srcDir 'test'
}
}
}
jar {
from {
configurations.runtime.collect{it.isDirectory() ? it : zipTree(it)}
}
manifest {
attributes 'Main-Class': 'jp.proactive.bridge.xpt.CurlToChangeWithLayoutMore'
}
exclude 'META-INF/*.RSA', 'META-INF/*.SF','META-INF/*.DSA'
}
dependencies {
testCompile group: 'junit', name: 'junit', version: '4.13-beta-3'
compile ('commons-io:commons-io:2.4')
compile ('net.sourceforge.javacsv:javacsv:2.0')
compile ('log4j:log4j:1.2.15'){
exclude group: 'javax.jms', module: 'jms'
exclude group: 'com.sun.jmx', module: 'jmxri'
exclude group: 'com.sun.jdmk', module: 'jmxtools'
}
}
tasks.withType(JavaCompile) {
options.encoding = "utf-8"
}
uploadArchives {
def nexusUser = System.getenv("NEXUS_USERNAME")
def nexusPassword = System.getenv("NEXUS_PASSWORD")
def nexusUrlSnapshot = "https://xxx.xxx.xxx.xxx/nexus/repository/maven-snapshots/"
def nexusUrlRelease = "https://xxx.xxx.xxx.xxx/nexus/repository/maven-releases/"
def isRelease = ((System.getenv("isRelease") == "true") ? true : false)
repositories{
mavenDeployer {
snapshotRepository(url: nexusUrlSnapshot) {
authentication (userName: nexusUser, password: nexusPassword)
}
repository(url: nexusUrlRelease) {
authentication (userName: nexusUser, password: nexusPassword)
}
pom.version = (isRelease ? releaseVersion : releaseVersion + "-SNAPSHOT")
pom.artifactId = "artifactId "
pom.groupId = "groupId "
}
}
}
// 配置jacoco插件
apply plugin: 'jacoco'
// 指定构建是的配置
buildscript {
repositories {
mavenCentral()
maven { url "http://maven.aliyun.com/nexus/content/groups/public/" }
}
dependencies {
classpath 'org.sonarsource.scanner.gradle:sonarqube-gradle-plugin:2.7.1'
}
}
//指定需要关联的配置文件,sonarqube.gradle中包含了sonarQube有关配置
apply from: rootProject.file('sonarqube.gradle')
2) 指定环境变量
settings.gradle
rootProject.name="xxx-xxxx-xxx"
3)指定sonarQube配置
apply plugin: 'org.sonarqube'
sonarqube {
properties {
properties["sonar.scm.enabled"] = "false"
properties["sonar.scm.disabled"] = "true"
properties["sonar.projectName"] = "cn.xxx.xxx.xxx::" + project.name
properties["sonar.host.url"] = "http://xxx.xxx.xxx.xxx:9000"
properties["sonar.login"] = "admin"
properties["sonar.password"] = "admin"
properties["sonar.sources"] = "src"
properties["sonar.tests"] = "test"
properties["sonar.java.coveragePlugin"] = "jacoco"
properties["sonar.dynamicAnalysis"] = "reuseReports"
properties["sonar.jacoco.reportPaths"] = "./target/coverage-reports/jacoco-unit.exec"
}
}