Intereting Posts
kodein – введенное значение данных не является значением данных У меня есть два метода расширения Kotlin для одного и того же класса, но с разными генерическими сигнатурами и компилятор жалуется В какой ситуации val / var необходим в параметре конструктора Котлина? Какова цель привязки ссылки класса к ковариантному типу? Kotlin After 60 Second останавливает запись голоса Будет ли карта Kotlin mapTo () перезаписывать данные уже в массиве? Как создать обработчик Generic Response для ошибки и проверки ответа с помощью модифицированных, rxjava и кинжалов Как исправить воссоздание программно Макет Тесты Kotlin не работают из командной строки с ClassNotFoundException, но работают с IntelliJ Kotlin: как параметр по умолчанию в «fun main (parameters: Array <String>)» печатает «гость» без присвоения каких-либо значений Оборонительная копия изменчивой коллекции в классе данных Kotlin Создать метод с общим параметром для повторных действий Пользовательский KeyDeserializer Смешанная Kotlin + Java с Maven, неразрешенная ссылка Проверьте, не является ли EditText пустым kotlin android

Компилировать Groovy и Kotlin?

Я работаю над небольшим проектом с Groovy и Kotlin, а мой код Kotlin зависит от моего кода Groovy, а не наоборот. Тем не менее, Kotlin компилирует мой код сначала вместо Groovy, и, как результат, я получаю такие ошибки, как Unresolved reference: SiteRepository

Любые предложения, как я могу это исправить, изменив последовательность сборки или Kotlin, явно зависящую от Groovy, или любое другое предложение?

Это можно сделать так:

Groovy First:

 compileGroovy.dependsOn = compileGroovy.taskDependencies.values - 'compileJava' compileKotlin.dependsOn compileGroovy compileKotlin.classpath += files(compileGroovy.destinationDir) classes.dependsOn compileKotlin 

или Котлин Первый:

 compileKotlin.dependsOn = compileKotlin.taskDependencies.values - 'compileJava' compileGroovy.dependsOn compileKotlin compileGroovy.classpath += files(compileKotlin.destinationDir) classes.dependsOn compileGroovy 

Чтобы быть понятным, вы можете выбрать, зависит ли ваш код Котлина от Groovy или Groovy от Kotlin, но вы не можете получить его в обоих направлениях.

Я думаю, что невозможно скомпилировать Kotlin против Groovy в одном модуле, но вы можете перемещать Groovy (или Kotlin) в отдельный модуль. Groovy будет скомпилирован в банке, и теперь Котлин может зависеть от кода Groovy. Чтобы помочь вам, я написал простой проект и опубликовал его на github.

upd 1:

Я создаю новый модуль и проект с kotlin и groovy и проверяю зависимости задач:

 ./gradlew -m kotlin-groovy:build :kotlin-groovy:compileKotlin SKIPPED :kotlin-groovy:compileJava SKIPPED :kotlin-groovy:compileGroovy SKIPPED :kotlin-groovy:processResources SKIPPED :kotlin-groovy:classes SKIPPED :kotlin-groovy:jar SKIPPED :kotlin-groovy:assemble SKIPPED :kotlin-groovy:compileTestKotlin SKIPPED :kotlin-groovy:compileTestJava SKIPPED :kotlin-groovy:compileTestGroovy SKIPPED :kotlin-groovy:processTestResources SKIPPED :kotlin-groovy:testClasses SKIPPED :kotlin-groovy:test SKIPPED :kotlin-groovy:check SKIPPED :kotlin-groovy:build SKIPPED BUILD SUCCESSFUL Total time: 2.587 secs 

Похоже, что порядок сортировки котлинских и хороших задач достаточно. Но если мы изменим шаги таким образом:

 ./gradlew -m kotlin-groovy:build :kotlin-groovy:compileGroovy SKIPPED :kotlin-groovy:compileKotlin SKIPPED :kotlin-groovy:compileJava SKIPPED :kotlin-groovy:processResources SKIPPED :kotlin-groovy:classes SKIPPED :kotlin-groovy:jar SKIPPED :kotlin-groovy:assemble SKIPPED :kotlin-groovy:compileTestKotlin SKIPPED :kotlin-groovy:compileTestJava SKIPPED :kotlin-groovy:compileTestGroovy SKIPPED :kotlin-groovy:processTestResources SKIPPED :kotlin-groovy:testClasses SKIPPED :kotlin-groovy:test SKIPPED :kotlin-groovy:check SKIPPED :kotlin-groovy:build SKIPPED BUILD SUCCESSFUL Total time: 2.745 secs 

Сборка по-прежнему не работает, потому что Котлин не видит Groovy.