Способ отключить совместное использование зависимостей Gradle между динамически загружаемым JAR - PullRequest
0 голосов
/ 01 апреля 2020

Я написал Java приложение-обертку, которое загружает сам JAR-файл приложения из Интернета. По сути, это автоматическое обновление c. JAR приложения затем запускается JAR-оберткой, загружая его и выполняя его функцию точки входа следующим образом:

Class<?> classObject = this.getClassObject();

Method method = classObject.getMethod("run", String[].class);

method.invoke( classObject.newInstance(), (Object)this.getArgs().toArray( new String[0] ));

Кажется, что JAR-приложение и JAR-обертка совместно используют одни и те же зависимости, если JAR-приложение загружается вот так. Есть ли способ сделать так, чтобы они не разделяли зависимости между ними?

Я намерен провести автоматическое c обновление. JAR-оболочка может иметь разные версии зависимостей по сравнению с установленным JAR-приложением. Это означает, что если есть обновление для одной из зависимостей, мне нужно обновить jar-файл оболочки и приложения, что лишает смысла автоматическую c систему обновления.

1 Ответ

0 голосов
/ 01 апреля 2020

Решено, добавив плагин shadow jar и переместив эти конфликтующие зависимости в другое пространство имен.

...