我正在从Maven迁移到Gradle,并且生成的源有问题。这是其中一个子项目的build.gradle
plugins {
id 'war'
id 'net.ltgt.apt-idea' version '0.15'
}
dependencies {
...
compileOnly 'com.querydsl:querydsl-apt:4.2.1:jpa'
compileOnly 'org.hibernate:hibernate-jpamodelgen:1.3.0.Final'
}
def generatedSources = "${buildDir}/generated/source/apt/main"
def generatedOutputDir = file("$generatedSources")
task generateSources(type: JavaCompile, group: 'build') {
doFirst {
generatedOutputDir.exists() || generatedOutputDir.mkdirs()
sourceSets.main.java.srcDirs = ["${generatedSources}", 'src/main/java']
}
options.compilerArgs += [
'-processor', '-proc:none',
'org.hibernate.jpamodelgen.JPAMetaModelEntityProcessor,' +
'com.querydsl.apt.jpa.JPAAnnotationProcessor',
'-AaddSuppressWarningsAnnotation=true',
'-Aquerydsl.entityAccessors=true',
'-s', "${generatedSources}"
]
}
compileJava.finalizedBy generateSources
类已正确生成,但是在生成之后,我立即收到错误消息“找不到适合的方法...”
基本上,编译失败,因为在编译阶段未考虑生成的类。
用finalizedBy
我很确定它会起作用,但是没有。
关于在compileJava
阶段之前我还能如何使类生成运行的任何想法?
此行
compileJava.finalizedBy generateSources
应该是
compileJava.dependsOn generateSources
请参见https://docs.gradle.org/current/userguide/more_about_tasks.html#sec:adding_dependencies_to_tasks