Groovy允许在ext中为项目定义额外的属性。
我想在groovy的额外属性中定义Detekt的版本。Detekt是Kotlin的静态代码分析工具。
然而,当我这样做的时候:
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/.*"
}
}它包括:
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发布于 2018-03-12 12:32:03
“New”Gradle插件定义(不包括对buildscript块的完全依赖)不允许版本中的变量。
有关更多信息,请参阅错误消息中提到的文档部分。有一个小节“插件dsl的限制”解释了一切。
如果要继续使用变量版本字符串,则需要使用apply plugin: “xxx”语法返回到“旧方式”。
发布于 2018-03-12 12:33:29
发布于 2018-03-12 13:07:55
正如@Strelok建议的那样,最后的解决办法(直到错误被修复)是:
plugins更改为apply plugin: "io.gitlab.arturbosch.detekt"解决方案:
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/.*"
}
}https://stackoverflow.com/questions/49235194
复制相似问题