配置带有子模块的Android项目与sonarqube gradle插件一起使用的正确方法是什么?

配置带有子模块的Android项目与sonarqube gradle插件一起使用的正确方法是什么?,第1张

概述配置带有模块的 Android项目与sonarqube gradle插件一起使用的正确方法是什么?谷歌并不是我的朋友,但我可能错过了一些基本的东西. (我搜索与android构建目录和子模块相关的sonarqube问题.没有有用的结果.) 在很高的层次上,我正在使用具有以下结构的Android项目. git_repository|----- android_project |--- app 配置带有子模块的 Android项目与sonarqube gradle插件一起使用的正确方法是什么?谷歌并不是我的朋友,但我可能错过了一些基本的东西. (我搜索与androID构建目录和子模块相关的sonarqube问题.没有有用的结果.)

在很高的层次上,我正在使用具有以下结构的AndroID项目.

git_repository|----- androID_project  |--- app  |--- SDK    |- API

git_repository包含README.md和其他顶级文件,包括androID_project. androID_project包含应用程序,以及SDK中的git子模块.这个git子模块包含app需要运行的API代码.

问题是当我尝试运行sonarqube时,它似乎在寻找不存在的文件/目录.对于一个更简单的最小项目,我没有这个问题.我计划在星期一设置一个使用子模块的最小项目,但我想在离开周末前把这个问题拿出来.

$./gradlew clean sonarqube* snip *:sonarqubeInvalID value for sonar.java.test.librarIEs:sonarqube FailedFAILURE: Build Failed with an exception.* What went wrong:Execution Failed for task ':sonarqube'.> No files nor directorIEs matching '/Users/my_username/git_repository/androID_project/app/build/intermediates/dependency-cache/deBUG'* Try:Run with --stacktrace option to get the stack trace. Run with --info or -- deBUG option to get more log output.BUILD FailedTotal time: 9.897 secs$

此Gradle任务在MacOS / AndroID Studio命令行设置上失败,但最终目标是使配置与Jenkins一起使用.
我的settings.gradle和build.gradle文件如下.显然我做错了什么.

git_repository / androID_project / settings.gradle完整列表

include ':app',':API'project(':API').projectDir = new file('SDK/API')

git_repository / androID_project / build.gradle完整列表

// top-level build file where you can add configuration options common to all sub-projects/modules.buildscript {    repositorIEs {        jcenter()        maven {            url "https://plugins.gradle.org/m2/"        }    }    dependencIEs {        classpath 'com.androID.tools.build:gradle:2.2.3'        classpath 'com.neenbedankt.gradle.plugins:androID-apt:1.8'        classpath 'org.sonarsource.scanner.gradle:sonarqube-gradle-plugin:2.2'        // NOTE: Do not place your application dependencIEs here; they belong        // in the indivIDual module build.gradle files    }}apply plugin: 'org.sonarqube'allprojects {    repositorIEs {        jcenter()    }    tasks.withType(JavaCompile) {        options.enCoding = 'UTF-8'    }}//subprojects {//    sonarqube {//        propertIEs {// //           property "sonar.sources","src"//        }//    }//}//sonarqube {//    propertIEs {////        property "sonar.exclusions","file:**/SDK/**"//    }//}subprojects {    sonarqube {        propertIEs {            property "sonar.sourceEnCoding","UTF-8"            property "sonar.sources","src/main/java"            property "sonar.java.binarIEs","./build/"            property "sonar.tests","src/androIDTest"//            property "sonar.exclusions","build,build/**,**/*.png"            property "sonar.import_unkNown_files",true            property "sonar.androID.lint.report","./build/outputs/lint-results.xml"        }    }}project(":API") {    sonarqube {        skipProject = true    }}
解决方法 是的,对于具有多个模块的项目来说,它有点棘手,它使用适当的通配符实现.

跟着这些步骤:

>在包含所有子模块的主模块中放置
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应用于单独模块的build.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在推送之前制作项目,否则构建将失败,因为findBUGs需要字节码来分析.

不要使用该属性

//noinspection GroovyAssignabilityCheck            property "sonar.projectKey","appar_app"

这个sonar.projectKey属性. SonarQube使用它来识别声纳数据库中的每个项目(或模块).因此,如果所有模块都具有相同的projectKey值,SonarQube将更新其数据库中的单个项目.不用担心,此属性会自动设置为每个模块的文件夹名称.

总结

以上是内存溢出为你收集整理的配置带有子模块的Android项目与sonarqube gradle插件一起使用的正确方法是什么?全部内容,希望文章能够帮你解决配置带有子模块的Android项目与sonarqube gradle插件一起使用的正确方法是什么?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1125999.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-30
下一篇 2022-05-30

发表评论

登录后才能评论

评论列表(0条)

保存