Моя библиотека поддерживает сборки Bazel и зависит от Maven Central. Пользователь моей библиотеки хочет использовать более новую версию зависимости с новыми переходными зависимостями . Как это можно сделать?
gRPC 1.17 зависит от Guava 26. Однако в Guava 27 добавлена зависимость от com.google.guava:failureaccess
. Обычно приложение, использующее gRPC, просто создает свой собственный native.maven_jar()
с новой версией и отключает вызов gRPC для native.maven_jar()
. Затем это «обновит» репозиторий @com_google_guava_guava
, который затем будет использоваться как gRPC, так и приложением.
Но @com_google_guava_guava
не включает информацию о зависимостях. Это обычно решается наличием Third_party java_library()
s, которые объединяют транзитивные зависимости. Однако эти java_library()
не могут быть изменены приложением.
Я считаю, что bind()
решит эту проблему, так как gRPC может зависеть от //external:com_google_guava_guava
, который может быть java_library()
. Но bind()
не рекомендуется.