首页 > 解决方案 > 从模块运行 ktlint 的问题

问题描述

更新ktlint,启动任务,一切正常。

这是我的代码build.gradle

configurations {
    ktlint
}

dependencies {
    implementation fileTree(dir: 'libs', include: ['*.jar'])
    ktlint "com.pinterest:ktlint:0.34.2"
    implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
    //...another dependencies
}

repositories {
    jcenter()
}

configurations {
    ktlint
}

task ktlint(type: JavaExec, group: "verification") {
    description = "Check Kotlin code style."
    classpath = configurations.ktlint
    main = "com.pinterest.ktlint.Main"
    args "src/**/*.kt"
    // to generate report in checkstyle format prepend following args:
    // "--reporter=plain", "--reporter=checkstyle,output=${buildDir}/ktlint.xml"
    // see https://github.com/pinterest/ktlint#usage for more
}
check.dependsOn ktlint

task ktlintFormat(type: JavaExec, group: "formatting") {
    description = "Fix Kotlin code style deviations."
    classpath = configurations.ktlint
    main = "com.pinterest.ktlint.Main"
    args "-F", "src/**/*.kt"
}

但是当我将依赖项更改为我的模块custom_ktlint_rules

dependencies {
    implementation fileTree(dir: 'libs', include: ['*.jar'])
    ktlint project(':custom_ktlint_rules')

并运行任务,我收到此错误:

FAILURE:构建失败并出现异常。

  • 出了什么问题:无法确定任务 ':app:ktlint' 的依赖关系。

    无法解析配置 ':app:ktlint' 的所有任务依赖项。无法解析项目:custom_ktlint_rules。要求:项目:app 无法在项目的以下变体之间进行选择:custom_ktlint_rules:- debugRuntimeElements - releaseRuntimeElements 所有这些都与消费者属性匹配:- 变体“debugRuntimeElements”:-找到 com.android.build.api.attributes.BuildTypeAttr 'debug ' 但不是必需的。- 找到 com.android.build.api.attributes.VariantAttr 'debug' 但不是必需的。- 找到 com.android.build.gradle.internal.dependency.AndroidTypeAttr 'Apk' 但不是必需的。- 找到 org.gradle.usage 'java-runtime' 但不是必需的。- 找到 org.jetbrains.kotlin.platform.type 'androidJvm' 但不是必需的。- 变体 'releaseRuntimeElements': - 找到 com.android.build.api.attributes.BuildTypeAttr 'release' 但不是必需的。- 找到 com.android.build.api.attributes.VariantAttr 'release' 但不是必需的。- 找到 com.android.build.gradle.internal.dependency.AndroidTypeAttr 'Apk' 但不是必需的。- 找到 org.gradle.usage 'java-runtime' 但不是必需的。- 找到 org.jetbrains.kotlin.platform.type 'androidJvm' 但不是必需的。- 找到 com.android.build.api.attributes.BuildTypeAttr 'release' 但不是必需的。- 找到 com.android.build.api.attributes.VariantAttr 'release' 但不是必需的。- 找到 com.android.build.gradle.internal.dependency.AndroidTypeAttr 'Apk' 但不是必需的。- 找到 org.gradle.usage 'java-runtime' 但不是必需的。- 找到 org.jetbrains.kotlin.platform.type 'androidJvm' 但不是必需的。- 找到 com.android.build.api.attributes.BuildTypeAttr 'release' 但不是必需的。- 找到 com.android.build.api.attributes.VariantAttr 'release' 但不是必需的。- 找到 com.android.build.gradle.internal.dependency.AndroidTypeAttr 'Apk' 但不是必需的。- 找到 org.gradle.usage 'java-runtime' 但不是必需的。- 找到 org.jetbrains.kotlin.platform.type 'androidJvm' 但不是必需的。但不是必需的。- 找到 org.gradle.usage 'java-runtime' 但不是必需的。- 找到 org.jetbrains.kotlin.platform.type 'androidJvm' 但不是必需的。但不是必需的。- 找到 org.gradle.usage 'java-runtime' 但不是必需的。- 找到 org.jetbrains.kotlin.platform.type 'androidJvm' 但不是必需的。

  • 尝试:使用 --stacktrace 选项运行以获取堆栈跟踪。使用 --info 或 --debug 选项运行以获得更多日志输出。运行 --scan 以获得完整的见解。

  • 在https://help.gradle.org获得更多帮助

0 秒内构建失败

build.gradle的单独模块在这里:

dependencies {
    implementation fileTree(dir: 'libs', include: ['*.jar'])
    implementation 'com.android.support:appcompat-v7:28.0.0'

    compileOnly "com.pinterest:ktlint:$ktlintVersion"

    testImplementation 'junit:junit:4.12'

    androidTestImplementation 'com.android.support.test:runner:1.0.2'
    androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'
    implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
}

标签: androidandroid-gradle-plugin

解决方案


使用最新版本0.34.2此问题已在最新版本中得到解决。

更多详情请看这里

将此库用于ktlint"com.pinterest:ktlint:0.34.2"

试试这个:

ktlint project(':custom_ktlint_rules', configuration: 'default')

推荐阅读