2

摇篮版本:5.1

Java 版本:11

我在gradle文件中定义了以下任务来生成QueryDSL类:

task generateQClasses (type: JavaCompile) {
    source = sourceSets.main.java.srcDirs
    classpath = sourceSets.main.compileClasspath
    destinationDir = file('src/main/java')
    options.annotationProcessorPath = configurations.annotationProcessor
    options.compilerArgs = ['-proc:only', '-processor', 'com.querydsl.apt.jpa.JPAAnnotationProcessor', '-Aquerydsl.packageSuffix=.querydsl']
}

下面是我的依赖块:

annotationProcessor "com.querydsl:querydsl-apt:4.2.1:jpa"
annotationProcessor "org.hibernate.javax.persistence:hibernate-jpa-2.1-api:1.0.2.Final"
annotationProcessor "javax.annotation:javax.annotation-api:1.3.2"

如果我执行 `gradlew generateQClasses,我会在日志中看到以下内容:

Attempt to recreate a file for type foo.bar.QClass
error: Attempt to recreate a file for type foo.bar.QClass

它失败并显示文件已存在的错误。如果文件存在,我如何配置此任务以覆盖文件?

另外,上面的配置是根项目的配置,它有 5 个子项目。AnnotationProcessor能够覆盖其中一个子项目中的文件,但不能覆盖其他文件(所有子项目都具有相同的配置)。我错过了什么吗?

4

1 回答 1

0

我在这里有同样的行为......当生成的源文件夹不为空时会发生这种情况。尝试用gradle clean之前执行。然后就OK了。但我正在尝试用您已完成的任务替换默认的 QueryDSL 任务。如果我成功了,我会在这里更新答案。

于 2021-11-05T17:16:46.093 回答