The*_*ect 5 groovy jpa gradle querydsl
我在groovy中定义了实体bean.我无法为groovy中的实体生成querydsl代码.
这个Gradle Querydsl配置适用于Java中的实体bean,但不适用于groovy.
参考关于替代代码生成的 Querydsl文档,它声明GenericExporter必须用于为groovy实体生成代码.但我无法弄清楚如何GenericExporter在gradle中配置.
如果有人能够使用gradle为groovy中的实体生成querydsl代码,请分享.
谢谢
我今天想出了一个可行的解决方案.它结合了QueryDSL手册的"基于类路径的代码生成"一章提供的信息和我在github上发现的一些"tasca"项目的构建脚本(非常感谢作者).
我在github上找到的构建脚本已针对Scala进行了调整,但经过一些修改我得到了它与groovy一起工作.我给你我整个build.gradle下面.这是一个非常新鲜的春季靴子项目.
请注意,我可以删除一些不是特定于问题的东西(比如jadira/joda库).我离开它们是为了明确你必须将它们作为项目的编译依赖项和buildcript依赖项包含在内.
这是因为Querydsl的GenericExporter需要与它扫描的编译类相关的所有内容,否则它将失败(嗯,它对我做了).
最后,我故意留下GenericExporter配置中使用的完全限定类名,这样我就不会用"import"语句污染整个构建脚本.
我的解决方案可能不是最好的,所以我愿意接受评论.目前,它的工作原理如下:
./gradle compileGroovy以构建您手动编写的类(包括@Entity您在Groovy中编写的类./gradle generateQueryDSL哪个应该产生"Q"类src/main/generated./gradle compileGroovy再次运行以重新构建所有内容,这次包括之前生成的源generateQueryDSL.我用gradle 1.11和2.1测试了它.我希望它对你也有用.
//
// Configure the build script itself
//
buildscript {
ext {
querydslGeneratedSourcesDir = file("src/main/generated")
querydslInputEntityPackage = "my.project.domain"
querydslVersion = "3.6.0"
groovyVersion = "2.3.8"
jadiraVersion = "3.2.0.GA"
jodaTimeVersion = "2.6"
jodaMoneyVersion = "0.10.0"
hibernateJpaApiVersion = "1.0.0.Final"
}
repositories {
mavenLocal()
mavenCentral()
}
dependencies {
// Load Spring Boot plugin
classpath("org.springframework.boot:spring-boot-gradle-plugin:1.1.9.RELEASE")
// Required by QueryDSL GenericExporter
classpath("com.mysema.querydsl:querydsl-codegen:${querydslVersion}")
classpath("org.hibernate.javax.persistence:hibernate-jpa-2.1-api:${hibernateJpaApiVersion}")
classpath files("${buildDir}/classes/main")
classpath("org.jadira.cdt:cdt:${jadiraVersion}")
classpath("joda-time:joda-time:${jodaTimeVersion}")
classpath("org.joda:joda-money:${jodaMoneyVersion}")
}
}
apply plugin: 'java'
apply plugin: 'groovy'
apply plugin: 'eclipse'
apply plugin: 'idea'
apply plugin: 'spring-boot'
//
// Make both java and groovy files visible only to the Groovy Compiler plugin
//
sourceSets {
main {
java {
srcDirs = []
}
groovy {
srcDirs = ['src/main/java', querydslGeneratedSourcesDir]
}
}
test {
java {
srcDirs = []
}
groovy {
srcDirs = ['src/test/java']
}
}
}
task generateQueryDSL(group: 'build', description: 'Generate QueryDSL query types from compiled entity types') {
new com.mysema.query.codegen.GenericExporter().with {
setKeywords(com.mysema.query.codegen.Keywords.JPA)
setEntityAnnotation(javax.persistence.Entity.class)
setEmbeddableAnnotation(javax.persistence.Embeddable.class)
setEmbeddedAnnotation(javax.persistence.Embedded.class)
setSupertypeAnnotation(javax.persistence.MappedSuperclass.class)
setSkipAnnotation(javax.persistence.Transient.class)
setTargetFolder(querydslGeneratedSourcesDir)
export(querydslInputEntityPackage)
}
}
//
// Configure spring boot plugin
//
bootRepackage {
mainClass = 'my.project.Application'
}
jar {
baseName = 'gs-spring-boot'
version = '0.1.0'
}
repositories {
mavenLocal()
mavenCentral()
}
dependencies {
compile("org.springframework.boot:spring-boot-starter-web")
// tag::actuator[]
compile("org.springframework.boot:spring-boot-starter-actuator")
// end::actuator[]
compile("org.springframework.boot:spring-boot-starter-data-jpa")
// compile("org.springframework.boot:spring-boot-starter-security")
compile("mysql:mysql-connector-java:5.1.34")
compile("org.codehaus.groovy:groovy-all:${groovyVersion}")
compile("cz.jirutka.spring:spring-rest-exception-handler:1.0.1")
compile("com.mysema.querydsl:querydsl-core:${querydslVersion}")
// Joda & Jadira types
compile("joda-time:joda-time:${jodaTimeVersion}")
compile("org.joda:joda-money:${jodaMoneyVersion}")
compile("org.jadira.usertype:usertype.extended:${jadiraVersion}")
compile("org.jadira.cdt:cdt:${jadiraVersion}")
compile("com.fasterxml.jackson.datatype:jackson-datatype-joda:2.4.4")
// Testing
testCompile("junit:junit")
testCompile("org.springframework.boot:spring-boot-starter-test")
}
// Configure the gradle wrapper
task wrapper(type: Wrapper) {
gradleVersion = '2.1'
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2747 次 |
| 最近记录: |