我已经将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

最佳答案

您可以尝试类似的方法(困难的方式):

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
}


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

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

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

querydsl {
    jpa = true
    querydslSourcesDir = generatedClassesPath
}


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

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


从插件文档中:


  querydslSourcesDir
  
  项目相对路径到查询的位置
  元模型源在其中创建。无论哪个注释都没关系
  使用处理器,所有元模型类都将在
  这个目录。
  
  默认为src/querydsl/java

关于java - 更改QueryDSL生成的文件目录,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/46422919/

10-11 18:05