【问题标题】:SonarQube - Android not working for gradle 3.0.0SonarQube - Android 不适用于 gradle 3.0.0
【发布时间】:2018-03-13 11:55:12
【问题描述】:

在我更新 android studio 之前,Android sonarqube 一直有效。现在它给出了一个错误

FAILURE: Build failed with an exception.

* What went wrong:
com.android.build.gradle.api.ApkVariant.getCompileLibraries()Ljava/util/Collection;

我认为发生这种情况是因为 gradle 依赖语法从 'compile' 更改为 'implementation',如下所示在最新的 android 版本中。

来自

dependencies {
    compile ........
    compile ........
}

dependencies {
    implementation ........
    implementation ........
}

谁能帮我为新的android版本配置sonarqube

【问题讨论】:

    标签: android android-studio android-gradle-plugin sonarqube kotlin


    【解决方案1】:

    阅读答案的最后部分以获取最新更新

    原答案

    我进行了一些研究:

    • here你可以 查找 SonarQube 内部跟踪的问题

    • here你 可以找到 SonarQube 开发人员向 Google 提出的问题 关于 API 更改。正如 Google 工程师所说,此更改是有意的,并且已经存在替代 API。 SonarQube 表示他们不会支持 android 插件 3.0.0,直到最终版本或至少 RC 版本

    结果:

    要继续工作,您必须使用当前稳定的 Android Studio 和 Android 插件 v2.X.X 构建您的项目


    更新 - 2017 年 11 月 6 日

    SonarQube 发布新版本 2.6,完全兼容 AGP (Android Gradle Plugin) 3.0.0。

    buildscript {
        repositories {
            google()
            jcenter()
    
            maven {
                url "https://plugins.gradle.org/m2/"
            }
        }
        dependencies {
            classpath 'com.android.tools.build:gradle:3.0.1'
            classpath "org.sonarsource.scanner.gradle:sonarqube-gradle-plugin:2.6.1"
        }
    }
    
    allprojects {
        repositories {
            google()
            jcenter()
        }
    }
    
    apply plugin: "org.sonarqube"
    

    更多信息在发布页面HERE

    【讨论】:

    • 这不是一个很好的答案。我建议接受@Benoit 的回答
    • @NelsonRamirez 这是编写时的最佳答案。当 SonarQube 正式支持稳定版时,我会更新它jira.sonarsource.com/browse/…
    • 答案已更新以反映最新的 SonarQube 版本
    • * 出了什么问题:任务 ':app:compileDebugJavaWithJavac' 执行失败。 > javax/xml/bind/JAXBException 我在运行 gradlew sonarqube 时遇到这个错误。
    【解决方案2】:

    sonarqube 2.6 发布后,更新插件对我来说就足够了

    plugins {
        id "org.sonarqube" version "2.6"
    }
    

    【讨论】:

      【解决方案3】:

      你可以使用我的解决方案https://github.com/SonarSource/sonar-scanner-gradle/pull/33

      buildscript {
          repositories {
              jcenter()
              google()
              maven {
                  url "https://plugins.gradle.org/m2/"
              }
          }
          dependencies {
              classpath "com.android.tools.build:gradle:3.0.0"
              classpath "org.sonarsource.scanner.gradle:sonarqube-gradle-plugin:2.6-rc1"
          }
      }
      
      apply plugin: 'org.sonarqube'
      

      【讨论】:

      • 似乎这个特定的分支不再工作了。你能用当前可用的依赖更新你的答案吗?
      • @BMacedo 完成。我更新到最新的 sonarqube 类路径。
      【解决方案4】:

      更新 Benoit 答案,官方声纳扫描仪 gradle 插件 (v2.6-rc1) 已经支持新的 gradle 语法。因此,将您的根 gradle 脚本更新为:

      buildscript {
          repositories {
              jcenter()
              google()
              maven {
                  url "https://jitpack.io"
              }
          }
          dependencies {
              classpath "com.android.tools.build:gradle:3.0.0"
              classpath "com.github.SonarSource:sonar-scanner-gradle:2.6-rc1"
          }
      }
      
      apply plugin: 'org.sonarqube'
      

      【讨论】:

      • 对于那些不想使用 jitpack maven 的人来说,jcenter 路径是这样的:classpath "org.sonarsource.scanner.gradle:sonarqube-gradle-plugin:2.6-rc1"
      • * 出了什么问题:任务 ':app:compileDebugJavaWithJavac' 执行失败。 > javax/xml/bind/JAXBException 我在运行 gradlew sonarqube 时遇到这个错误。
      【解决方案5】:

      尽量使用低版本的gradle

      【讨论】:

        猜你喜欢
        • 2017-01-23
        • 2016-12-03
        • 1970-01-01
        • 2022-01-07
        • 2015-04-06
        • 2023-02-06
        • 2014-11-23
        • 1970-01-01
        相关资源
        最近更新 更多