У меня есть ситуация, когда в одном из моих обязательных jar-файлов зависимостей также есть более старая версия зависимости, встроенная в нее (стиль uber-jar).
К сожалению, встроенная зависимость несовместима с некоторыми другими зависимостями.
Я разработал стратегию с использованием пользовательской версии com.springframework.boot.loader.JarLauncher
, где я могу управлять порядком файлов jar в пути к классам, переопределив метод postProcessClassPathArchives
.
, эта стратегия основана на это сообщение в блоге на тему , но в моем случае вместо того, чтобы убедиться, что папка classes
появляется первой в пути к классам, я сначала выдвигаю совместимую версию несовместимых встроенных классов.
упомянутое сообщение в блоге помещает подкласс JarLauncher
в сам проект, но в моем случае такая ситуация может возникнуть в нескольких проектах, поэтому я хочу выделить собственный подкласс JarLauncher
в свой собственный проект исделать его доступным как отдельную зависимость через некоторое подходящее хранилище maven.
также используется в блогеgradle copySpec
, чтобы скопировать пользовательский класс запуска из ${buildDir}/classes
в корень фляги весенней загрузки так, чтобы он был доступен загрузчику классов, ответственному за загрузку класса, названного Main-Class
в манифесте.
Итак, мой вопрос касается вариантов достижения аналогичного результата, но с использованием пользовательского модуля запуска, встроенного в банку зависимостей.
Мне интересно, могу ли я ссылаться на пользовательский модуль запуска из банки?файл, помещенный в корень загрузочного фляги, или если мне нужно извлечь содержимое и просто переместить туда отдельный класс.
В любом случае, я знаком только с основами Gradle и не знаю, как выполнить любой из этих вариантов с помощью техник Gradle.
Любое руководство приветствуется!