简体   繁体   中英

Changing QueryDSL Generated Files Directory

I have integrated QueryDSL into my Spring boot project.

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/')
    }
}

The generated .class and .java (Q classes) files are currently deployed into build/classes/main/my/package/model where the entity class files are created.

How can I configure the JPAAnnotationProcessor to put generated sources(eg QMyEntity.java) into src/main/generated ?

You could try something like that (hard way):

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
}

The compiler options are required if you are using lombok.

Or if you are using the querydsl-plugin you could configure the output directory (easy way):

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

querydsl {
    jpa = true
    querydslSourcesDir = generatedClassesPath
}

You could always add generated sources to classpath to catch the files by Intellij Idea:

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

From plugin documentation:

querydslSourcesDir

The project relative path to where the querydsl meta model sources are created in. It does not matter which annotation processors are used, all meta model classes will be created within this directory.

Defaults to src/querydsl/java .

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM