У меня есть проект, который зависит от нескольких сторонних библиотек, сам проект упакован как банку и распространяется среди других разработчиков в виде библиотеки. Эти разработчики добавляют зависимости к их пути к классам и используют мою библиотеку в своем коде.
Недавно у меня возникла проблема с одной из сторонних зависимостей, apache commons codec libary, Проблема заключается в следующем:
byte[] arr = "hi".getBytes();
// Codec Version 1.4
Base64.encodeBase64String(arr) == "aGk=\r\n" // this is true
// Codec Version 1.6
Base64.encodeBase64String(arr) == "aGk=" // this is true
Как вы можете видеть, выход метода изменился с малым выпуском версии.
Мой вопрос заключается в том, что я не хочу принуждать пользователя моей библиотеки к определенной второстепенной версии сторонней библиотеки. Предполагая, что я знаю об изменении зависимой библиотеки, есть ли в любом случае, когда я могу узнать, какая версия библиотеки включена в путь к классам и вести себя соответственно? или, альтернативно, то, что считается наилучшей практикой для подобных сценариев?
P.S - Я знаю, что для приведенного выше примера я могу просто использовать new String(Base64.encodeBase64(data, false))
, который совместим с обратной связью, это более общий вопрос.