将 Kotlin 的 detekt 版本定义为 extra 属性 (ext)
Define Kotlin's detekt version as extra property (ext)
Groovy 允许为 ext
.
中的项目定义 额外属性
我想在 groovy 的额外属性中定义 Detekt 的版本。 Detekt 是一款针对 Kotlin lang 的静态代码分析工具。
然而,当我按照以下方式进行操作时:
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
“新样式”Gradle plug-in 定义(不包括对 buildscript
块的完全依赖)版本中不允许变量。
有关详细信息,请参阅错误消息中提到的文档部分。有一个小节“插件 dsl 的限制”解释了一切。
如果您想继续使用可变版本字符串,您需要使用 apply plugin: “xxx”
语法 return 到“旧方法”。
您不能在 plugins {}
中使用变量:docs
Where «plugin version» and «plugin id» must be constant, literal
这是一个未解决的错误:Allow the plugin DSL to expand properties as the version
正如@Strelok 建议的最终解决方法(直到 bug 被修复)是:
- 在 buildscript.dependecies
中添加类路径
- 将
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/.*"
}
}
Groovy 允许为 ext
.
我想在 groovy 的额外属性中定义 Detekt 的版本。 Detekt 是一款针对 Kotlin lang 的静态代码分析工具。
然而,当我按照以下方式进行操作时:
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
“新样式”Gradle plug-in 定义(不包括对 buildscript
块的完全依赖)版本中不允许变量。
有关详细信息,请参阅错误消息中提到的文档部分。有一个小节“插件 dsl 的限制”解释了一切。
如果您想继续使用可变版本字符串,您需要使用 apply plugin: “xxx”
语法 return 到“旧方法”。
您不能在 plugins {}
中使用变量:docs
Where «plugin version» and «plugin id» must be constant, literal
这是一个未解决的错误:Allow the plugin DSL to expand properties as the version
正如@Strelok 建议的最终解决方法(直到 bug 被修复)是:
- 在 buildscript.dependecies 中添加类路径
- 将
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/.*"
}
}