В настоящее время я пытаюсь обновить версию Gradle своих проектов с 4.10.3 до 6.1.1. Проблема, с которой я сталкиваюсь и не могу обернуться, - это изменение разрешения зависимостей. Я не вижу никаких замечаний по этому поводу в руководствах по миграции.
В частности, похоже, что некоторые (или все) переходные процессы теперь игнорируются. Вот настройка в упрощенном виде:
У меня есть проект Main и библиотека Boot . Main зависит от Boot , который выглядит следующим образом:
implementation group: 'com.example', name: 'boot', version: '1.0'
Boot зависит от servlet-api
implementation group: 'javax.servlet', name: 'servlet-api', version: '2.5'
Это один из множества примеров. В 4.10.3 для Main нет проблем со ссылкой на ServletContext. Теперь он работает в моей среде IDE, но задача gradlew compile Java завершается неудачно, говоря, что ServletContext является неизвестным символом.
Похоже, но не совсем так, я не могу передать зависимости от другой источник Вот второй пример: у меня есть проект Сервис и библиотека Commons . Проект Сервис имеет дополнительный набор источников, называемый api . Теперь Сервис содержит следующие зависимости
apiImplementation group: "com.example", name: "commons", version: "1.0"
implementaiton sourceSets.api.output
С 4.10.3 это работает отлично, но с 6.1.1 я не могу использовать элементы из commons in Service: главный . Здесь также у меня есть много случаев, когда это терпит неудачу.
Обычно я предполагаю, что я что-то забыл, и я потратил довольно много времени, уже просматривая сеть на предмет подсказок, но видя, как она прекрасно работает с 4.10 .3, но не с 6.1.1 (без других изменений), это должно быть изменение разрешения зависимостей или изменение синтаксиса. В любом случае я не могу найти какую-либо документацию по конкретной теме. Я надеюсь, что кто-то уже сталкивался с этой проблемой и нашел решение.