Контекст: хотим тянуть BslLanguageServerDownloader из Maven Central в плагин SonarQ in EDT (1C:EDT, OSGi/Tycho). Обсуждение — issue #8, где вы отметили, что от github-api можно отказаться. Спасибо за готовность перевести загрузчик на gson!
Проблема веса под OSGi. Полная рантайм-замкнутость io.github.1c-syntax:utils:0.9.0 (для использования downloader'а) — 12 jar, ~5.6 МБ (проверял по реальным jar/POM с Central). Основной вес — org.kohsuke:github-api:1.330, который тянет jackson-databind/core/annotations (2.20), commons-lang3, commons-io. Дополнительно github-api и semver4j поставляются без OSGi-манифеста, а Jackson 2.20 конфликтует с Jackson 2.12, который несёт target-платформа EDT (одинаковые BSN разных версий).
Суть. Из github-api реально нужен минимум — определить последний релиз (стабильный/pre-release) и получить список его ассетов. Это ~1–2 обращения к GitHub REST API.
Предложение. Реализовать резолвинг релиза на java.net.http.HttpClient + gson (или совсем без внешнего JSON-парсера — вручную), без github-api. Тогда замкнутость сокращается примерно до utils + semver4j + commons-compress/commons-codec (распаковка) + slf4j-api + jspecify — порядка 1.5 МБ вместо ~5.6 (а если распаковку тоже перевести на java.util.zip, ещё меньше). Из не-OSGi остаются только два небольших jar (utils, semver4j), и конфликт версий Jackson исчезает — встраивание в OSGi-бандл становится лёгким. Это разблокирует переход экосистемы EDT на общий загрузчик utils.
Контекст: хотим тянуть
BslLanguageServerDownloaderиз Maven Central в плагин SonarQ in EDT (1C:EDT, OSGi/Tycho). Обсуждение — issue #8, где вы отметили, что отgithub-apiможно отказаться. Спасибо за готовность перевести загрузчик на gson!Проблема веса под OSGi. Полная рантайм-замкнутость
io.github.1c-syntax:utils:0.9.0(для использования downloader'а) — 12 jar, ~5.6 МБ (проверял по реальным jar/POM с Central). Основной вес —org.kohsuke:github-api:1.330, который тянетjackson-databind/core/annotations(2.20),commons-lang3,commons-io. Дополнительноgithub-apiиsemver4jпоставляются без OSGi-манифеста, а Jackson 2.20 конфликтует с Jackson 2.12, который несёт target-платформа EDT (одинаковые BSN разных версий).Суть. Из
github-apiреально нужен минимум — определить последний релиз (стабильный/pre-release) и получить список его ассетов. Это ~1–2 обращения к GitHub REST API.Предложение. Реализовать резолвинг релиза на
java.net.http.HttpClient+ gson (или совсем без внешнего JSON-парсера — вручную), безgithub-api. Тогда замкнутость сокращается примерно доutils+semver4j+commons-compress/commons-codec(распаковка) +slf4j-api+jspecify— порядка 1.5 МБ вместо ~5.6 (а если распаковку тоже перевести наjava.util.zip, ещё меньше). Из не-OSGi остаются только два небольших jar (utils,semver4j), и конфликт версий Jackson исчезает — встраивание в OSGi-бандл становится лёгким. Это разблокирует переход экосистемы EDT на общий загрузчикutils.