首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将Kotlin的detekt版本定义为额外属性(ext)

将Kotlin的detekt版本定义为额外属性(ext)
EN

Stack Overflow用户
提问于 2018-03-12 12:24:44
回答 3查看 1.2K关注 0票数 0

Groovy允许在ext中为项目定义额外的属性。

我想在groovy的额外属性中定义Detekt的版本。Detekt是Kotlin的静态代码分析工具。

然而,当我这样做的时候:

代码语言:javascript
复制
buildscript {
    // testing, code-style, CI-tools
    ext.detect_code_analysis = '1.0.0.RC6-3' //change to 1.0.0 when available

    repositories {
        google()
        jcenter()
    }
    dependencies {
        classpath "com.android.tools.build:gradle:$gradle_version"
        classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
    }
}
plugins {
    id "io.gitlab.arturbosch.detekt" version "$detect_code_analysis"
}

allprojects {
    repositories {
        google()
        jcenter()
    }
}

task clean(type: Delete) {
    delete rootProject.buildDir
}

detekt {
    version = "$detect_code_analysis"
    profile("main") {
        input = "$projectDir/app/src/main/java"
        config = "$projectDir/detekt-config.yml"
        filters = ".*test.*,.*/resources/.*,.*/tmp/.*"
    }
}

它包括:

代码语言:javascript
复制
Error:(17, 0) startup failed:
        build file '/Users[...]build.gradle': 17: argument list must be exactly 1 literal non empty string

See https://docs.gradle.org/4.1/userguide/plugins.html#sec:plugins_block for information on the plugins {} block

@ line 17, column 5.
        id "io.gitlab.arturbosch.detekt" version "$detect_code_analysis"
^

1 error
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2018-03-12 12:32:03

“New”Gradle插件定义(不包括对buildscript块的完全依赖)不允许版本中的变量。

有关更多信息,请参阅错误消息中提到的文档部分。有一个小节“插件dsl的限制”解释了一切。

如果要继续使用变量版本字符串,则需要使用apply plugin: “xxx”语法返回到“旧方式”。

票数 2
EN

Stack Overflow用户

发布于 2018-03-12 12:33:29

不能在plugins {}文档中使用变量

插件版本和插件id必须是常量的,文字的。

这是一个打开的bug:允许插件DSL作为版本展开属性

票数 1
EN

Stack Overflow用户

发布于 2018-03-12 13:07:55

正如@Strelok建议的那样,最后的解决办法(直到错误被修复)是:

  • 在buildscript.dependecies中添加类路径
  • plugins更改为apply plugin: "io.gitlab.arturbosch.detekt"

解决方案:

代码语言:javascript
复制
buildscript {

    // testing, code-style, CI-tools
    ext.detect_code_analysis = '1.0.0.RC6-3' //change to 1.0.0 when available

    repositories {
        google()
        jcenter()
        maven { url "https://plugins.gradle.org/m2/" }
    }
    dependencies {
        classpath "com.android.tools.build:gradle:$gradle_version"
        classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
        classpath "gradle.plugin.io.gitlab.arturbosch.detekt:detekt-gradle-plugin:$detect_code_analysis"
    }
}

apply plugin: "io.gitlab.arturbosch.detekt"

allprojects {
    repositories {
        google()
        jcenter()
    }
}

task clean(type: Delete) {
    delete rootProject.buildDir
}

detekt {
    version = "$detect_code_analysis"
    profile("main") {
        input = "$projectDir/app/src/main/java"
        config = "$projectDir/detekt-config.yml"
        filters = ".*test.*,.*/resources/.*,.*/tmp/.*"
    }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49235194

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档