Я пытаюсь добавить 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"
)
}
Когда я пытаюсь построить, я получаю сообщение об ошибке: cannot find symbol QuerydslBinderCustomizer<QSample> в классе репозитория. QSample.java генерируется в соответствии с образцом модели и находится в
/build/generated/sources/annotationProcessor/java/main/com/prep/ws/model/QSample.java.
Поскольку это находится в папке сборки, я не понимаю, почему это не видно для IDE и gradle.
Я не уверен, что я делаю неправильно.
@Lesiak Я использую eclipse, а не идею, но упомянул там, что я проанализировал больше объяснений, даже для идеи. Версия Gradle 5.4.
Это поможет, если вы измените srcDir на build/generated/sources/annotationProcessor/java/
@Lesiak Спасибо за помощь, но, к сожалению, нет. Уже попробовал. Пробовал со всеми комбинациями для установки srcDir -> базовый каталог, каталог модели, каталог annotationProcessor, как вы упомянули. Также пробовал без установки sourceSet. Без изменений. Не уверен, как он генерируется, но не включается.




После многих попыток мне удалось заставить работать 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 не работает.
Я люблю тебя за публикацию этого. Работает без плагинов и работает для Eclipse и IntelliJ. идеально
Подтверждено, что это все еще работает в холодный зимний день 2021 года. Спасибо!
Из любопытства - какую версию класса и интеллиджа вы используете? Вам больше не нужно добавлять sourceSets