Compile Groovy y Kotlin?

Estoy trabajando en un pequeño proyecto con Groovy y Kotlin, y mi código de Kotlin depende de mi código de Groovy, no al revés. Sin embargo, Kotlin comstack mi código primero en lugar de Groovy y, como resultado, obtengo errores como la Unresolved reference: SiteRepository

¿Alguna sugerencia de cómo puedo solucionar esto, ya sea cambiando la secuencia de compilation, o Kotlin dependiendo explícitamente de Groovy, o cualquier otra sugerencia?

Se puede hacer así:

Groovy primero:

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

o Kotlin Primero:

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

Para que quede claro, puedes elegir si tu código de Kotlin depende de Groovy o Groovy en Kotlin, pero no puedes tenerlo de las dos maneras.

Creo que no es posible comstackr Kotlin contra Groovy en un module, pero puedes mover Groovy (o Kotlin) en un module por separado. Groovy se comstackrá en jar, y Kotlin ahora puede depender del código de Groovy. Para ayudarte, escribí un proyecto simple y lo publiqué en github.

upd 1:

Creo un nuevo module y proyecto con kotlin y groovy, e inspecciono las dependencies de tareas:

 ./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 

Parece suficiente el order de cambio de kotlin y las tareas geniales. Pero si cambiamos los pasos de esta manera:

 ./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 

La compilation todavía no funciona, porque Kotlin no ve a Groovy.

  • El text de la label no se actualiza aunque el hilo de la interfaz de usuario parece responder
  • No puedo get una variable en la sección de buildscript
  • onCreate crashing después de convertir de Java a Kotlin
  • No se puede hacer que Coverity Scan funcione (Java / Kotlin / Gradle 3.3 en Windows y Travis)
  • Error ClassNotFoundException para el proyecto Kotlin (no Android) en Android Studio
  • Devuelve el índice doble del elemento de la colección mientras itera
  • ¿Cómo puedo declarar un parámetro de function que puede ser una cadena o una function en Kotlin?
  • Android ¿Cómo establecer múltiples valores de gravedad programáticamente en Kotlin?