【发布时间】:2017-05-23 22:28:16
【问题描述】:
我有一个 gradle 构建脚本。我想要说脚本来生成 QueryDSL 元数据。这些元数据应该在 build/generated-sources/metamodel 文件夹下生成。
我目前面临的问题是元模型不仅生成一次,而且生成两次。除了所需的目标,它还在“默认”buld/classes/... 中生成,导致“重复类”错误。
sourceSets {
generated.java.srcDirs=['build/generated-sources/metamodel']
main {
java { srcDir 'src/main/java' }
}
test {
java { srcDir 'src/main/test' }
}
}
configurations { querydslapt }
dependencies {
compile 'org.hibernate:hibernate-entitymanager:5.2.3.Final',
'org.hibernate.javax.persistence:hibernate-jpa-2.1-api:1.0.0.Final-redhat-1',
'com.querydsl:querydsl-jpa:4.1.3',
// ... others, non-hibernate/querydsl ...
querydslapt 'com.querydsl:querydsl-apt:4.1.3'
}
task generateSources(type: JavaCompile, group: 'build', description:'Generates the QueryDSL query types') {
source = sourceSets.main.java
classpath = configurations.compile + configurations.querydslapt
options.compilerArgs = ['-proc:only',
'-processor', 'com.querydsl.apt.hibernate.HibernateAnnotationProcessor']
destinationDir = sourceSets.generated.java.srcDirs.iterator().next()
}
compileJava {
dependsOn generateSources
source generateSources.destinationDir
}
根据 gradle 跟踪,问题似乎是混合中有两个 AnnotatioProcessor。首先,HibernateAnnotationProcessor。其次,一个 JPAAnnotationProcessor,最终生成重复的类。而且我不知道为什么,构建脚本看起来不错。我知道,这可能是猜测,但我很感激任何建议。我什至清理了我的 gradle-cache,以防万一。它甚至可能不是纯粹的构建脚本相关问题,但即使我通过控制台运行脚本,行为仍然存在。
【问题讨论】:
标签: java hibernate gradle querydsl