Java QueryDSL和Gradle Kotlin DSL
我们正在将Groovy gradle构建文件迁移到KotlinDSL,我一直在配置QueryDSL类的生成 实体类是用java编写的,QDSL文件也应该用java编写 正在工作的groovy构建文件代码段:Java QueryDSL和Gradle Kotlin DSL,java,gradle,querydsl,gradle-kotlin-dsl,Java,Gradle,Querydsl,Gradle Kotlin Dsl,我们正在将Groovy gradle构建文件迁移到KotlinDSL,我一直在配置QueryDSL类的生成 实体类是用java编写的,QDSL文件也应该用java编写 正在工作的groovy构建文件代码段: sourceSets { generated.java { srcDirs = ['src/main/generated']} } task generateQueryDSL(type: JavaCompile, group: 'build', description: 'Gene
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
}
}
我不确定,但有一种感觉,我可以做这一代简单得多,但我已经没有想法了。有另一种方法来生成QueryDSL Q*类,可用于最新的Gradle版本(我认为>=4.9):下面是该脚本的Groovy版本,您应该尝试从中生成Kotlin版本:
sourceSets {
generated.java {
srcDir file('/build/generated/java')
}
}
dependencies {
compile("com.querydsl:querydsl-jpa:${queryDslVersion}")
compile "org.hibernate.javax.persistence:hibernate-jpa-2.1-api:${hibernateJpaVersion}"
annotationProcessor "com.querydsl:querydsl-apt:${queryDslVersion}:jpa"
annotationProcessor "org.hibernate.javax.persistence:hibernate-jpa-2.1-api:${hibernateJpaVersion}"
}
compileJava {
options.annotationProcessorPath = configurations.annotationProcessor
options.setAnnotationProcessorGeneratedSourcesDirectory(file("$projectDir/build/generated/java"))
}
这些QueryDSL类将在Java编译任务执行期间自动生成(注释处理器),您不再需要定义专用任务
sourceSets {
generated.java {
srcDir file('/build/generated/java')
}
}
dependencies {
compile("com.querydsl:querydsl-jpa:${queryDslVersion}")
compile "org.hibernate.javax.persistence:hibernate-jpa-2.1-api:${hibernateJpaVersion}"
annotationProcessor "com.querydsl:querydsl-apt:${queryDslVersion}:jpa"
annotationProcessor "org.hibernate.javax.persistence:hibernate-jpa-2.1-api:${hibernateJpaVersion}"
}
compileJava {
options.annotationProcessorPath = configurations.annotationProcessor
options.setAnnotationProcessorGeneratedSourcesDirectory(file("$projectDir/build/generated/java"))
}