Intellij не выбирает классы, сгенерированные mapstruct - PullRequest
0 голосов
/ 06 февраля 2020

Я пытаюсь решить проблему с Intellij и Mapstruct. Ранее я использовал Java 8 и Gradle 4.6, и Mapstruct работал нормально. Теперь я обновил Java до 11 и Gradle до 4.10.3. Теперь проблема в том, что после сборки, когда я запускаю приложение, я получаю исключение UnSatisfiedDependencyException, потому что некоторый класс Mapper был недоступен. Я рассмотрел много вопросов в SO, большинство из которых предложили делегировать операцию Intellij для сборки / запуска Gradle. Но я хочу, чтобы Intellij запускал приложение и тестировал. В этом посте предлагается решение, которое я хочу, но после его применения я получаю другую ошибку компиляции. Это раздел из моего build.gradle:

//mapstruct lib to generate mappings between Java bean types
compileOnly("org.mapstruct:mapstruct-processor:${mapStructVersion}")
annotationProcessor("org.mapstruct:mapstruct-processor:${mapStructVersion}")

//lib to support lombok
compileOnly 'org.projectlombok:lombok:1.18.6'
annotationProcessor 'org.projectlombok:lombok:1.18.6'

Ранее классы отображения были созданы в sr c ->. Теперь после обновления классы сопоставления, не созданные в sr c ->. Сгенерированные Gradle классы присутствуют в root -> build, где я могу видеть классы картографа. Intellij неправильно выбирает сгенерированные классы или мне не хватает некоторых настроек. Пожалуйста, помогите мне исправить путь правильно. PS: я использую Intellij 2019.1.2, Mapstruct 1.2.0.Final и Spring Boot 2.2.2.RELEASE.

1 Ответ

0 голосов
/ 06 февраля 2020

Попробуйте использовать implementation вместо compileOnly, как в официальных примерах MapStruct: https://github.com/mapstruct/mapstruct-examples/blob/master/mapstruct-on-gradle/build.gradle

...