Intereting Posts
Почему kotlin ошибочно: val minT: Long = -9223372036854775808L //Long.MIN_VALUE Ошибка компилятора функции Unfrapping Kotlin Kotlin + Dagger2: не может быть предоставлен без конструктора @Inject или из метода @ Provides- или @ Produces-annotated Тестирование модуля Kotlin для функциональных параметров и объектов Добавить сгенерированное значение в объект RealmObject Внешняя область Котлина @StringRes, @DrawableRes, @LayoutRes и т. Д. Андроидные аннотации lint check с параметрами kotlin Присвоение свойств объекту javascript с использованием динамических имен свойств Могу ли я сравнить, равны ли два числа с плавающей запятой в Котлине? Как вы используете Flowable.generate от Kotlin Как создать список с общим аргументом в Котлине Как преобразовать java.util.stream.Stream <Something> в kotlin.Sequence <Something> Как получить завершение кода IntelliJ IDEA для импорта статических методов Java в качестве функций верхнего уровня Kotlin? Аннотации времени выполнения, аннотированные по поданной в классе kotlin, генерируются неправильно Kotlin DialogFragment editText редактируемый всегда null

Gradle 3.0.0 (в Android Studio 3.0) изменяет порядок последовательности задач (при компиляции с модулем Kotlin)?

У меня есть простой сценарий градиента (только для регистрации, когда выполняется моя задача Gradle)

class TestScriptTask extends DefaultTask { @TaskAction def testScript() { logger.quiet("My Gradle Task Here") } } project(":app") { task testScript(type: TestScriptTask) { } } 

И у меня есть простой Android-проект «приложение», который зависит от модуля «remotelib» в Котлине.

Мои зависимости build.gradle от приложения:

 dependencies { compile fileTree(dir: 'libs', include: ['*.jar']) compile project(':remotelib') // and others } 

Поэтому, когда я запускаю задачи с градиентом, как показано ниже

  ./gradlew :app:assembleRelease :app:testScript 

Скрипт запускается, как показано ниже (обратите внимание, что задача выполняется сначала)

 > Task :app:testScript My Gradle Task Here > Task :remotelib:compileReleaseKotlin Using kotlin incremental compilation 

Это происходит только при использовании 'com.android.tools.build:gradle:3.0.0-beta1' (а также beta2 ).

Когда я был на 'com.android.tools.build:gradle:2.3.2' , последовательность в порядке, как и ожидалось, т.е.

 > Task :remotelib:compileReleaseKotlin Using kotlin incremental compilation > Task :app:testScript My Gradle Task Here 

Является ли это ошибкой gradle 3.0.0 или новым способом обработки заданий?

Обновить

Мой проект расширяется, как показано ниже.

 buildscript { ext.kotlin_version = '1.1.2-4' repositories { google() jcenter() } dependencies { classpath 'com.android.tools.build:gradle:3.0.0-beta1' classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" } } apply from: 'test_script.gradle' allprojects { repositories { google() jcenter() } } task clean(type: Delete) { delete rootProject.buildDir } 

Solutions Collecting From Web of "Gradle 3.0.0 (в Android Studio 3.0) изменяет порядок последовательности задач (при компиляции с модулем Kotlin)?"

В плагине Android Gradle 3.0.0 и его взаимодействии с плагином Kotlin внесено множество изменений, а также изменения, которые могут повлиять на порядок заказов.

Однако в вашем примере вы не указываете (по крайней мере, в приведенном здесь коде), что ваша задача :app:testScript зависит от компиляции Kotlin в :remotelib . Поэтому порядок выполнения между этими двумя задачами не определен, и их можно запустить в произвольном порядке.

Это может быть сделано одним из следующих способов:

  • testScript.dependsOn configurations.compile

    Так как вы добавили compile project(':remotelib') в зависимости от app , заставив testScript зависеть от configurations.compile , также будет запускаться сборка конфигурации по умолчанию в проекте :remotelib , таким образом, и компиляция Kotlin в нем.

  • testScript.dependsOn project(':remotelib').compileKotlin

    Это явно указывает, что задача зависит от :remotelib:compileKotlin , но для этого требуется :remotelib для оценки до :app (вам может потребоваться добавить строку evaluationDependsOn ':remotelib' в скрипт сборки вашего :app ).