从模块

时间:2019-08-01 12:07:04

标签: android android-gradle-plugin

更新了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')

并运行任务,出现此错误:

  

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

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

         
        

    无法解决配置':app:ktlint'的所有任务依赖关系。     无法解析项目:custom_ktlint_rules。      要求:          项目:app     无法在以下项目变体之间进行选择:custom_ktlint_rules:           -debugRuntimeElements           -releaseRuntimeElements         它们都符合使用者属性:           -变体'debugRuntimeElements':               -找到com.android.build.api.attributes.BuildTypeAttr'调试',但不是必需的。               -找到com.android.build.api.attributes.VariantAttr“调试”,但不是必需的。               -找到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“发行版”,但不是必需的。               -找到com.android.build.api.attributes.VariantAttr“发行版”,但不是必需的。               -找到com.android.build.gradle.internal.dependency.AndroidTypeAttr'Apk',但     不需要。               -找到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"
}

2 个答案:

答案 0 :(得分:1)

使用最新版本0.34.2,最新版本已解决此问题。

有关更多详细信息,请查看here

this库用于ktlint "com.pinterest:ktlint:0.34.2"

尝试一下:

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

答案 1 :(得分:0)

所以,这就是我解决问题并运行ktlint的方式

首先,我正在更新根build.gradle

// Top-level build file where you can add configuration options common to all sub-projects/modules.

buildscript {
    ext.kotlin_version = '1.3.41'
    repositories {
        google()
        jcenter()
        gradlePluginPortal()

    }
    dependencies {
        classpath "org.jlleitschuh.gradle:ktlint-gradle:8.2.0"
        // NOTE: Do not place your application dependencies here; they belong
        // in the individual module build.gradle files
    }
}

subprojects {
    apply plugin: "org.jlleitschuh.gradle.ktlint" // Version should be inherited from parent

    // Optionally configure plugin
    ktlint {
        debug = true
    }

    dependencies {
        ktlintRuleset project(":custom_ktlint_rules")
    }
}

allprojects {
    repositories {
        google()
        jcenter()

    }
}

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

然后在build.gradle中添加下一个依赖项:

apply plugin: 'kotlin'

dependencies {
    compileOnly("org.jetbrains.kotlin:kotlin-stdlib")
    compileOnly("org.jetbrains.kotlin:kotlin-reflect")
    compileOnly("org.jetbrains.kotlin:kotlin-script-runtime")
    compileOnly("com.pinterest.ktlint:ktlint-core:0.34.2")
}