Контекст
При компиляции и запуске программ на Java, использующих множество зависимостей, вы легко можете столкнуться с так называемым «адом путей к классам», который обычно вызывается конфликтующими транзитивными зависимостями.,С помощью механизма зависимостей Gradle для Java это можно до некоторой степени смягчить, по крайней мере, не пропуская транзитивные зависимости во время компиляции ( link ).
Насколько я понимаю, когда возникают проблемы с конфликтом транзитивных зависимостей, существует три основных способа:
- Найти другую библиотеку (версию) и надеяться, что она работает
- Затенить переходные зависимости
- (новый). Использовать Расслоение для модулей
Вопрос
Как мы имеемкак механизмы определения зависимостей реализации и их затенения (т. е. изменения их пространства имен во время выполнения), знаете ли вы, существует ли автоматический способ затенения всех зависимостей реализации?Затененный шаблон может использовать artifactId
, который в любом случае должен быть уникальным.
В качестве альтернативы, существует ли автоматический способ использования новой системы "наслоения модулей"?
Справочная информация
В прошлом я уже спрашивал, как избежать конфликта между успешной компиляцией и ошибками загрузки во время выполнения SO Вопрос .Я также проверил, как разрешать конфликты зависимостей с помощью , отключая переходные зависимости и , затеняя в жирной банке .Я также видел, что система модулей Java не будет предназначена для ее решения ссылка , но многоуровневая структура проекта Jigsaw может ссылка