В проекте есть два модуля: данные и инфраструктура.
Модуль данных использует подключаемый модуль grpc, предоставленный Google: grpc-protobuf, который ссылается на com.google.guava: guava [версия: 26.0-android].
Модуль инфраструктуры использует плагин консула: consul-client, который ссылается на com.google.guava: guava [версия: 22.0].
А модуль данных зависит от модуля инфраструктуры.
Нет проблем во время компиляции, но во время выполнения ConsulCache в консул-клиенте вызывает метод Stopwatch.elapsed () в com.google.guava: guava, который не является аргументом в com.google.guava: guava: 22.0 и параметрический в com.google.guava: guava: 26.0-android. ConsulCache всегда указывает на com.google.guava: guava: 26.0-android, а не com.goog.guava: guava: 22.0, который выдаст следующее исключение:
java.lang.NoSuchMethodError: com.google.common.base.Stopwatch.elapsed()Ljava/time/Duration;
at com.orbitz.consul.cache.ConsulCache$1.onComplete(ConsulCache.java:103)
Поскольку это проект maven, и все дело в автоматическом управлении jar-пакетами, на него автоматически ссылаются сторонние плагины.
Как исправить это исключение без изменения исходного кода?