querydsl生成的q源码导入不正确
querydsl generated q source code is not imported correctly
我正在尝试将 querydsl 添加到现有系统,但我在获取生成的 Q 源进行编译时遇到问题。我已经阅读了几个类似的问题和解释(https://spring.io/blog/2015/09/04/what-s-new-in-spring-data-release-gosling#querydsl-web-support, https://blog.jdriven.com/2018/10/using-querydsl-annotation-processor-with-gradle-and-intellij-idea/(即使这与想法有关)),几乎每个 querydsl 的堆栈溢出问题...
这是我的 build.gradle 的一部分,它描述了问题所在:
ext {
...
querydslVersion = '4.2.1'
}
sourceSets {
generated {
java {
srcDirs = [ 'build/generated' ]
}
}
main {
java {
srcDirs = [ 'src/main/java' ]
}
}
}
...
dependencies {
...
compile("com.querydsl:querydsl-core:${querydslVersion}")
compile("com.querydsl:querydsl-jpa:${querydslVersion}")
compile "com.querydsl:querydsl-apt:$querydslVersion:jpa"
compileOnly group: 'org.projectlombok', name: 'lombok'
annotationProcessor(
"com.querydsl:querydsl-apt:${querydslVersion}:jpa",
"org.hibernate.javax.persistence:hibernate-jpa-2.1-api:1.0.2.Final",
"javax.annotation:javax.annotation-api:1.3.2",
"org.projectlombok:lombok"
)
}
当我尝试构建时,出现错误:存储库 class 中的 cannot find symbol QuerydslBinderCustomizer<QSample>
。 QSample.java根据模型Sample生成,定位到
/build/generated/sources/annotationProcessor/java/main/com/prep/ws/model/QSample.java.
由于它位于构建文件夹中,我很困惑为什么它对 IDE 和 gradle 不可见。
我不确定我做错了什么。
经过多次尝试,我设法让 querydsl 正常工作(并且运行良好)。我发布这个答案以防其他人遇到同样的问题。就我而言,我必须将 sourceSet 更改为直接指向 annotationProcessor/java/main。之后一切都按预期工作。
sourceSets.main.java.srcDirs = ['build/generated/sources/annotationProcessor/java/main','src/main/java']
指向 build/generated
、build/generated/sources/annotationProcessor
或 build/generated/sources/annotationProcessor/java
无效。
我正在尝试将 querydsl 添加到现有系统,但我在获取生成的 Q 源进行编译时遇到问题。我已经阅读了几个类似的问题和解释(https://spring.io/blog/2015/09/04/what-s-new-in-spring-data-release-gosling#querydsl-web-support, https://blog.jdriven.com/2018/10/using-querydsl-annotation-processor-with-gradle-and-intellij-idea/(即使这与想法有关)),几乎每个 querydsl 的堆栈溢出问题...
这是我的 build.gradle 的一部分,它描述了问题所在:
ext {
...
querydslVersion = '4.2.1'
}
sourceSets {
generated {
java {
srcDirs = [ 'build/generated' ]
}
}
main {
java {
srcDirs = [ 'src/main/java' ]
}
}
}
...
dependencies {
...
compile("com.querydsl:querydsl-core:${querydslVersion}")
compile("com.querydsl:querydsl-jpa:${querydslVersion}")
compile "com.querydsl:querydsl-apt:$querydslVersion:jpa"
compileOnly group: 'org.projectlombok', name: 'lombok'
annotationProcessor(
"com.querydsl:querydsl-apt:${querydslVersion}:jpa",
"org.hibernate.javax.persistence:hibernate-jpa-2.1-api:1.0.2.Final",
"javax.annotation:javax.annotation-api:1.3.2",
"org.projectlombok:lombok"
)
}
当我尝试构建时,出现错误:存储库 class 中的 cannot find symbol QuerydslBinderCustomizer<QSample>
。 QSample.java根据模型Sample生成,定位到
/build/generated/sources/annotationProcessor/java/main/com/prep/ws/model/QSample.java.
由于它位于构建文件夹中,我很困惑为什么它对 IDE 和 gradle 不可见。
我不确定我做错了什么。
经过多次尝试,我设法让 querydsl 正常工作(并且运行良好)。我发布这个答案以防其他人遇到同样的问题。就我而言,我必须将 sourceSet 更改为直接指向 annotationProcessor/java/main。之后一切都按预期工作。
sourceSets.main.java.srcDirs = ['build/generated/sources/annotationProcessor/java/main','src/main/java']
指向 build/generated
、build/generated/sources/annotationProcessor
或 build/generated/sources/annotationProcessor/java
无效。