Мы переносим наши файлы сборки Groovy Gradle в KotlinDSL, и я застрял с настройкой генерации классов QueryDSL.
Классы сущностей написаны на Java, а файлы QDSL должны быть и на Java.
Фрагмент кода рабочего файла сборки groovy:
sourceSets {
generated.java { srcDirs = ['src/main/generated']}
}
task generateQueryDSL(type: JavaCompile, group: 'build', description: 'Generates the QueryDSL query types') {
source = sourceSets.main.java
classpath = configurations.compile + configurations.querydslapt
options.compilerArgs = ["-proc:only", "-processor", "com.mysema.query.apt.jpa.JPAAnnotationProcessor"]
destinationDir = sourceSets.generated.java.srcDirs.iterator().next()
}
compileJava {
dependsOn generateQueryDSL
source generateQueryDSL.destinationDir
}
compileGeneratedJava {
dependsOn generateQueryDSL
options.warnings = false
classpath += sourceSets.main.runtimeClasspath
}
Это мое переписывание кода в KotlinDSL:
val querydsl by configurations.creating
val generated by java.sourceSets.creating {
java.srcDirs("build/generated/java")
}
tasks {
val generateQueryDsl by creating(JavaCompile::class.java) {
group = "build"
description = "Generate QueryDSL classes"
classpath = configurations.compile + querydsl
options.compilerArgs = listOf("-proc:only", "-processor", "com.mysema.query.apt.jpa.JPAAnnotationProcessor")
destinationDir = generated.java.srcDirs.first()
}
getByName<JavaCompile>("compileJava") {
dependsOn(generateQueryDsl)
source(generateQueryDsl.destinationDir)
}
getByName<JavaCompile>("compileGeneratedJava") {
dependsOn(generateQueryDsl)
options.isWarnings = false
classpath += java.sourceSets["main"].runtimeClasspath
}
}
Когда я запускаю задачу generateQueryDsl
, яне получает NO-SOURCE и не генерирует файлы QDSL:
> Task :common:compileKotlin UP-TO-DATE
> Task :common:generateGrammarSource UP-TO-DATE
> Task :common:compileJava UP-TO-DATE
> Task :common:processResources UP-TO-DATE
> Task :common:classes UP-TO-DATE
> Task :common:inspectClassesForKotlinIC UP-TO-DATE
> Task :common:jar UP-TO-DATE
> Task :common-db:compileKotlin UP-TO-DATE
> Task :common-db:compileJava UP-TO-DATE
> Task :common-db:processResources UP-TO-DATE
> Task :common-db:classes UP-TO-DATE
> Task :common-db:inspectClassesForKotlinIC UP-TO-DATE
> Task :common-db:jar UP-TO-DATE
> Task :core:generateQueryDsl NO-SOURCE
Я не уверен, но у меня есть ощущение, что я мог бы сделать это поколение намного проще, но у меня закончились идеи.