是它有点棘手与多个项目模块,它使用适当的通配符实现。
按照下列步骤:
包含所有子模块放置 sonarqube.gradle文件
在的所述的build.gradle文件中的主模块中主模块添加maven插件和 类依赖关系
这里是两个以上提到的文件的例子:
sonarqube.gradle
apply plugin: "org.sonarqube"
sonarqube {
//noinspection GroovyAssignabilityCheck
properties {
//noinspection GroovyAssignabilityCheck
property "sonar.projectName", "appar"
//noinspection GroovyAssignabilityCheck
property "sonar.projectVersion", "1.0"
//noinspection GroovyAssignabilityCheck
property "sonar.analysis.mode", "publish"
//noinspection GroovyAssignabilityCheck
property "sonar.language", "java"
//noinspection GroovyAssignabilityCheck
property 'sonar.sourceEncoding', "UTF-8"
//noinspection GroovyAssignabilityCheck
property "sonar.sources", "./src/main"
// noinspection GroovyAssignabilityCheck
property "sonar.exclusions", "src/main/java/com/appar/model/**, **/*Entity.java"
//noinspection GroovyAssignabilityCheck
property "sonar.host.url", "http://192.168.21.33:9000"
//noinspection GroovyAssignabilityCheck
property "sonar.login", "admin"
//noinspection GroovyAssignabilityCheck
property "sonar.profile", "fulllint"
//noinspection GroovyAssignabilityCheck
property 'sonar.import_unknown_files', true
//noinspection GroovyAssignabilityCheck
property "sonar.android.lint.report", "./build/outputs/lint-results-debug.xml"
//noinspection GroovyAssignabilityCheck
property "sonar.password", "admin"
//noinspection GroovyAssignabilityCheck
property "sonar.java.binaries", "build/"
}
}
的build.gradle
buildscript {
repositories {
jcenter()
maven {
url "https://plugins.gradle.org/m2/"
}
}
dependencies {
classpath 'com.android.tools.build:gradle:2.2.2'
classpath "org.sonarsource.scanner.gradle:sonarqube-gradle-plugin:2.0.1"
classpath 'com.dicedmelon.gradle:jacoco-android:0.1.1'
}
}
allprojects {
repositories {
jcenter()
}
}
然后从sonarqube.gradle在申请建立。的单独的模块
的gradle这里是子模块中的一个的的build.gradle的示例:
apply plugin: 'com.android.library'
apply from: '../sonarqube.gradle'
android {
compileSdkVersion 23
buildToolsVersion "23.0.3"
defaultConfig {
minSdkVersion 21
targetSdkVersion 23
versionCode 1
versionName "1.0"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
debug {
testCoverageEnabled = true
}
}
}
dependencies {
compile project(':java-library')
testCompile 'junit:junit:4.12'
testCompile "org.robolectric:robolectric:3.1.4"
}
只是把这个线沿与所有其他应用线,如图在上述文件
apply from: '../sonarqube.gradle'
后应用sonarqube.gradle涉及的子模块中的所有的build.gradle文件。
只需运行命令
./gradlew sonarqube
相信我的计划将会成功建立并被推入到sonarqube服务器,如果您使用的FindBugs推前使该项目的错误结果将得到显示
否则build会失败,因为findbugs需要字节码来分析。
并且不要使用属性
//noinspection GroovyAssignabilityCheck
property "sonar.projectKey", "appar_app"
这sonar.projectKey属性。这由SonarQube用于识别声纳数据库中的每个项目(或模块)。 因此,如果您的所有模块具有相同的projectKey值,SonarQube将更新其数据库中的单个项目。 不用担心,该属性会自动设置为每个模块的文件夹名称。