#java #maven #hibernate-validator
#java #maven #спящий режим-валидатор
Вопрос:
У меня есть модуль Spring, имеющий: 1) depedency org.hibernate-валидатор 6 … 2) переходный depedency org.hibernate-валидатор 5… 3) очень транзитивная зависимость, жестко закодированная в fat jar (gwt-user) зависимости vaadin с org.hibernate-validator <6
Они кажутся несовместимыми для обмена.
Проблема в том, что они не конфликтуют и не вызывают ex. Но во время компиляции (это следует за плохим артефактом до успешного переделывания) они беспорядочно перемешиваются (?). И неправильная версия (?) используется для возврата текста ошибки сообщения проверки. Что приводит к плохой печати, поскольку версии <= 5 не имеют javax.validation.constraints.NotBlank.message:
Объект: ***, ошибка: {javax.validation.constraints.NotBlank.message}
вместо правильного:
Объект: ***, ошибка: не должно быть пустым
Я действительно не могу что-то удалить и т.д. Нужно как-то различать их и использовать соответствующие версии в местах. Прежде всего, ограничьте этот валидатор fat jar, чтобы он никогда не выходил из vaadin =)
Заранее большое спасибо за любые указания по копанию.
Комментарии:
1. Ваш вопрос трудно понять. Если у вас есть два класса с одинаковым именем в пути к классу, у вас проблема. по возможности следует избегать жирных банок в качестве зависимостей.
2. Верно, извините. Не удается избежать vaadin =) Итак, что нужно расширить?
3. Итак, вы уверены, что vaadin не предлагает другую зависимость, которая не является fat jar?
4. Вы очень помогли с направлением, спасибо. После всех раскопок, несмотря на уверенность моих коллег, этот толстый jar вообще не понадобился =) Жаль, что исследование загрузчика классов не потребовалось.
Ответ №1:
- Как всегда, вы должны искать нормальную работоспособную зависимость
- где вы можете
<exclude>
(maven) использовать некоторые транзитивы и явно включать их в правильную версию - также проверьте, действительно ли эта зависимость необходима
- в редких дополнительных случаях см. Загрузчики классов, чтобы вы могли загружать одни и те же классы разных версий для разных потребителей
В моем конкретном случае обнаружено, что fat jar неиспользуем и свободен для удаления =) Спасибо за рекомендации.