更改QueryDSL生成的文件目录

时间:2017-09-26 09:40:00

标签: java jpa querydsl

我已将QueryDSL集成到我的Spring启动项目中。

的build.gradle:

//dependencies
compile("com.mysema.querydsl:querydsl-jpa:3.7.4")
compile("com.mysema.querydsl:querydsl-apt:3.7.4:jpa")

idea {
    module {
        sourceDirs += file('src/main/generated/')
        generatedSourceDirs += file('src/main/generated/')
    }
}

生成的.class.java(Q类)文件当前部署到创建实体类文件的build/classes/main/my/package/model中。

如何配置JPAAnnotationProcessor将生成的源(例如QMyEntity.java)放入src/main/generated

1 个答案:

答案 0 :(得分:0)

你可以尝试类似的东西(艰难的方式):

diff fileA fileB | grep "^>" | cut -c3- > fileA

如果使用lombok,则需要编译器选项。

或者如果您使用的是querydsl-plugin,您可以配置输出目录(简单方法):

def queryDslOutput = file("src/main/generated")
sourceSets {
    main {
        java {
            srcDir queryDslOutput
        }
    }
}

task generateQueryDSL(type: JavaCompile, group: 'build') {
    source = sourceSets.main.java
    classpath = configurations.compile
    destinationDir = queryDslOutput
    options.compilerArgs = [
            "-proc:only",
            "-processor", 'com.querydsl.apt.jpa.JPAAnnotationProcessor,lombok.launch.AnnotationProcessorHider$AnnotationProcessor'
    ]
}
compileJava.dependsOn(generateQueryDSL)

clean {
    delete queryDslOutput
}

您可以随时将生成的源添加到类路径以通过Intellij Idea捕获文件:

def generatedClassesPath= "build/generated/source/querydsl/main"

querydsl {
    jpa = true
    querydslSourcesDir = generatedClassesPath
}

来自插件文档:

  

def queryDslOutput = file(generatedClassesPath) sourceSets { main { java { srcDir queryDslOutput } } }

     

项目相对于querydsl所在的路径   创建元模型源。哪个注释无关紧要   使用处理器,将在其中创建所有元模型类   这个目录。

     

默认为querydslSourcesDir