MapStruct не генерирует реализацию

Я использую Java 17, Gradle в качестве инструмента сборки, ниже приведена моя зависимость от Gradle.

implementation 'org.mapstruct:mapstruct:1.5.5.Final'
implementation 'org.mapstruct:mapstruct-processor:1.5.5.Final'

Я пытаюсь понять MapStruct, но при построении Gradle bootRun вызывается MapStruct не генерирует никакой реализации.

Вот код:

@Mapper(componentModel = "spring")
public interface SimpleMapper {

    @Mapping(source = "name",target = "name")
    @Mapping(source = "totalCount",target = "count")
    SimpleDto mapToDto(SimpleRO ro);
}

SimpleDto.java

public class SimpleDto {
    private String name;
    private String count;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getCount() {
        return count;
    }

    public void setCount(String count) {
        this.count = count;
    }
}

SimpleRO.java

public class SimpleRO {
    private String name;
    private String totalCount;


    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getTotalCount() {
        return totalCount;
    }

    public void setTotalCount(String totalCount) {
        this.totalCount = totalCount;
    }
}

Вы должны зарегистрировать org.mapstruct:mapstruct-processor:1.5.5.Final как обработчик аннотаций, а не как зависимость реализации, как вы это делаете сейчас. См. mapstruct.org/documentation/installation/#gradle для правильной конфигурации Gradle.

Thomas Kläger 17.06.2024 10:34

Только добавление зависимости не подключит Mapstruct к процессу сборки, это то, что делает оператор annotationProcessor.

f1sh 17.06.2024 11:29
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
1
2
54
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Согласно Документации по установке MapStruct вы должны включить Mapstruct как зависимость, а также как annotationProcessor в свой build.gradle. Нравиться

dependencies {
    ...
    implementation 'org.mapstruct:mapstruct:1.5.5.Final'

    annotationProcessor 'org.mapstruct:mapstruct-processor:1.5.5.Final'
}

В файле, который вы показали, вторая часть (mapstruct-processor) также была указана как implementation вместо annotationProcessor.

Другие вопросы по теме