Определите задачу проверки стиля с помощью плагина Android gradle 3.4.0

#android #android-gradle-plugin #android-gradle-3.4.0

#Android #android-gradle-plugin #android-gradle-3.4.0

Вопрос:

Я обновил свой build.gradle файл до плагина Android gradle 3.4.0 с помощью gradle 5.11 .

Мой build.gradle :

 apply plugin: 'com.android.application'
apply plugin: 'checkstyle'

android {
    compileSdkVersion 28
    buildToolsVersion buildVersion

    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_8
        targetCompatibility JavaVersion.VERSION_1_8
    }

    defaultConfig {
        applicationId "myapp"
        minSdkVersion 21
        targetSdkVersion 28
        versionName "5.20.0"
        versionCode 520

    }

    dataBinding {
        enabled true
    }

    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}

dependencies {    
    implementation "com.android.support:support-v4:$supportLibVersion"
    implementation 'com.android.support.constraint:constraint-layout:1.1.3'
    testImplementation 'junit:junit:4.12'
    implementation fileTree(dir: 'libs', include: ['*.jar'])
}

task checkstyle(type: Checkstyle) {
    source 'src/'
    include '**/*.java'
    exclude '**/gen/**'
    classpath = files()
    reports {
        xml {
            destination "build/outputs/reports/checkstyle-results.xml"
        }
    }
    group = JavaBasePlugin.VERIFICATION_GROUP
    description = 'Performs checkstyle verification on the code.'
}

task checkstyleReport(dependsOn: 'checkstyle', group: JavaBasePlugin.VERIFICATION_GROUP)  {
    if (file("build/outputs/reports/checkstyle-results.xml").exists()) {
        ant.xslt(in: "build/outputs/reports/checkstyle-results.xml",
                style: "./config/checkstyle/checkstyle.xsl",
                out: "build/outputs/reports/checkstyle-results.html"
        )
    }
}
 

При синхронизации я получаю следующее сообщение об ошибке:

СБОЙ: сбой сборки с исключением.

  • Где: Файл сборки ‘/Users/cs/Development/project/app/build.gradle’
  • Что пошло не так: возникла проблема при оценке проекта ‘: app’.

    Не удалось найти метод destination() для аргументов [build/outputs/reports/checkstyle-results.xml ] в XML-отчете типа org.gradle.api.reporting.internal.Сгенерированный tasksinglefilereport.

  • Попробуйте: запустите с параметром —stacktrace, чтобы получить трассировку стека. Запустите с параметром —info или —debug, чтобы получить больше выходных данных журнала. Запустите команду —scan, чтобы получить полную информацию.
  • Получить дополнительную помощь можно по адресу https://help.gradle.org

ОШИБКА СБОРКИ за 1 секунду: метод Gradle DSL не найден: ‘destination ()’ Возможные причины: Проект «project» может использовать версию плагина Android Gradle, которая не содержит метода (например, «testCompile» был добавлен в 1.1.0). Обновите плагин до версии 3.4.0 и синхронизируйте проект

Проект «project» может использовать версию Gradle, которая не содержит метода. Откройте файл-оболочку Gradle

В файле сборки может отсутствовать плагин Gradle. Применить плагин Gradle

Ошибка указывает на эти строки:

 reports {
        xml {
            destination "build/outputs/reports/checkstyle-results.xml"
        }
    }
 

destination Был ли изменен синтаксис для gradle?

Ответ №1:

Решение

 reports {
        xml {
            destination file("build/outputs/reports/checkstyle-results.xml")
        }
    }
 

Метод, используемый для получения объекта, но теперь требует тип файла в качестве параметра — отсюда и ошибка параметра.
Таким образом, передача файла вместо этого решает проблему.

Вы можете увидеть ожидаемые типы параметров здесь:

https://docs.gradle.org/current/javadoc/org/gradle/api/reporting/ConfigurableReport.html#setDestination-java.io.File-