Con Java, estamos excluyendo así:
java { srcDir 'src' exclude '**/myTests/**' }Quiero hacer lo mismo con Kotlin. Estoy tratando de encontrar alguna documentación sobre esto en la documentación oficial que configura Kotlin, pero sin éxito.
Lo que esperaba y ya probé (y por supuesto sin ningún éxito):
kotlin { srcDir 'src' exclude '**/myTests/*.kt' }java { srcDir 'src' exclude '**/myTests/*.kt' }No hay ninguna configuración relacionada con Kotlin.
Por qué digo esto: tengo todos los archivos Kotlin en el directorio kotlin y los archivos Java en el directorio java . Pero durante la configuración, he añadido:
sourceSets { main.java.srcDirs += "src/main/kotlin" } Esto significa que con src/main/java , agregue archivos fuente de src/main/kotlin también mientras compila.
Esto debería resolver tu problema.
Android (probablemente necesite mejoras, parece escamoso):
tasks.withType(org.jetbrains.kotlin.gradle.tasks.KotlinCompile.class).configureEach { it.exclude('**/TestExcludeKotlinClass.kt') }Encontré una manera de hacer que esto funcione específicamente para las pruebas unitarias de Android (pero supongo que es adaptable) usando una combinación de otras soluciones aquí:
def filesToExclude = [ '**/*TestOne*.kt', '**/*TestTwo*.kt', ... ] tasks.withType(org.gradle.api.tasks.SourceTask.class).configureEach { it.exclude(filesToExclude) } android.sourceSets.test.kotlin.exclude(filesToExclude)En mi caso particular, se necesitaban los comodines adicionales alrededor del nombre de la prueba debido a que ocurría otra generación (específicamente, Dagger con kapt).
Esta parece ser una forma un poco complicada de abordarlo, pero funciona al garantizar que el objetivo de prueba se excluya de todas las tareas de las que realmente podría excluirse (incluidas las tareas de compilación y kapt). La exclusión de sourceSets sigue siendo necesaria para que el archivo no se seleccione para la compilación (creo que es el complemento Kotlin Gradle, pero también podría ser el complemento Android Gradle).