All streams
Search
Write a publication
Pull to refresh
29
0
Барух Садогурский @jbaruch

Developer Advocate

Send message
Спасибо! А о каких курсах речь, если не секрет?
Ну, надо конечно, запилить топик ярости с такой картинкой:
image
И вот там и пообщаемся.
И потом, зачем останавливаться на OSGi? раз уж по вашему принципу мы ищем кардинальное решение «Разрешение конфликтов в транзитивных зависимостях», то можем, например, перестать писать на языках, в которых эта проблема есть. Решать, так решать!

Ну а пока что, я бы хотел остаться в контексте этого топика, который, всё таки, по системам сборки.
OSGi является совершеннейшим оффтопиком в данной теме :)
Де факто, чаще всего мы сегодня собираем обычные Java приложения, без OSGi и Jigsaw. И чаще всего, достаточно предотвратить конфликты таким образом как описано в посте, чтобы приложение заработало as designed.
Зачем? Возьмется latest среди их объединения.
Ну, если есть ограничение сверху, то это ничего не решает, потому что если версия конфликтующей зависимости выпадает из диапазона, то здравствуй, nearset.
Так шансов что в сторонних библиотеках будет version-range практически нет. И слава богу.
А к чему это? Как сделать, чтобы всё работало ещё менее надёжно?
Это отличная идея. Прекрасный дифференциаtor для Firefox.
Добавил update про dependencyConvergence в пост.
Спасибо.
Да, это неплохая замена fail.
Мы всё еще остаемся а адом exclusions, но можно знать что прописать в dependency management.
Да, пожалуй пойдет. Сейчас проапдейчу пост.
Shading заточен не под обход nearest, а под обход конфликта, когда нужны обе версии класса. Этакий OSGi для бедных. Ужасный, конечно, костыль, но когда не хочется заморачиваться с OSGi — сойдет.

Я про него не писал, потому что слегка out of scope.
Так я-ж не против, «отобрать и запретить» вполне себе имеет право на жизнь. И его вполне можно оформить в Грейдле с помощью корпоративного плагина.
а про остальные проблемы, в том числе о пакетах, для которых нельзя одновременно в систему поставить 2 версии, приходите слушать в субботу :) Там их есть ;)
Да-да, «отобрать и запретить» это наше всё. Для всех остальных есть Gradle.

Если серьезно, то по хорошему в билде Грейдла не должно быть никаких тасков вообще. Корпоративный init.gralde apply-ит корпоративный плагин, и всё, проблема решена.
Да, это удобней, чем mvn dependency:tree, и exclude ручками, но это всё равно ручная работа.
Я, похоже, плохо объяснил как работает fail, за что прошу прощения. Вам не нужно ничего переключать. Когда сборка падает по конфликту, вы либо исключаете D1 (в посте есть пример), либо энфорсите D2 добавив его ручками (просто добавь воды зависимость в скрипт).

Information

Rating
Does not participate
Location
Gilroy, California, США
Date of birth
Registered
Activity