раздел с одинаковым именем зависимости с несколькими версиями в одном проекте

#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 неиспользуем и свободен для удаления =) Спасибо за рекомендации.