Я использую Mapstruct в простом проекте Java, который представляет собой пакет OSGi. Я добавил базовый код:
package com.XXX.XXX.test;
import org.mapstruct.Mapper;
import org.mapstruct.Mapping;
import org.mapstruct.factory.Mappers;
import java.util.Map;
@Mapper
public interface AccountPreferencesMapper {
AccountPreferencesMapper MAPPER = Mappers.getMapper(AccountPreferencesMapper.class);
@Mapping(expression = "java((String) r.get(\"defaultName\"))", target = "name")
MappedAccountPreferences toMappedAccountPreferences(Map<String, Object> r);
}
И
package com.XXX.XXX.test;
public class MappedAccountPreferences {
public String name;
}
Когда я создаю пакет, он будет генерировать реализацию внутри:
цель/сгенерированные источники/аннотации/AccountPreferencesMapperImpl.java
Проблема в том, что когда я вызываю AccountPreferencesMapper.MAPPER, я не могу его получить. Он скажет, что это null или я получаю: Не удалось инициализировать класс com.XXX.XXX.test.AccountPreferencesMapper
Я нахожусь в том же пакете со следующим кодом:
Map accountPreferencesMap = new HashMap<String, Object>();
accountPreferencesMap.put("defaultName", "User Name");
MappedAccountPreferences dto = AccountPreferencesMapper.MAPPER.toMappedAccountPreferences( accountPreferencesMap );
Обратите внимание, что мне нужно скомпилировать код, используя: mvn clean install и mvn content-package:install (я не использую какой-либо редактор для сборки)
Я попытался добавить в POM процессор mapstruct-jdk8/mapstruct-processor в качестве отдельной зависимости, как описано в других подобных проблемах с картами stackoverflow, но это не работает.
Благодарю вас!