Я видел optional
, используемый для этого.Вы сможете собрать библиотеку с указанным валидатором Hibernate.Клиенты, использующие вашу библиотеку, будут либо явно указывать зависимость валидатора Hibernate, либо библиотеку валидатора, совместимую с JSR-303, по своему выбору.
Это предполагает, что в аннотации @Validated
явно не упоминается пакет 'hibernate' воператор import
и использует вместо этого API.
Это может привести к тому, что приложение не будет собираться, если не указана зависимость, но это может быть нормально, поскольку это сделает клиента явным с выбором зависимости.
Этот SO ответ дает дополнительную информацию, а вот документация Maven .
Альтернатива - оставить то, что у вас есть, и если кто-то захочетчтобы использовать другую библиотеку, они исключают зависимость Hibernate из зависимости от этой библиотеки и добавляют свою собственную.Это хорошо, если клиент просто хочет, чтобы приложение работало, не задумываясь о том, какую зависимость JSR-303 использовать.
Выбор зависит от того, как вы ожидаете, что люди будут использовать эту библиотеку.