Как создать архив, содержащий исполняемый файл jar и связанные скрипты / ресурсы - PullRequest
0 голосов
/ 21 февраля 2020

Я пытаюсь найти способ создать архив, который будет содержать исполняемый файл jar для приложения Java (Spring Boot), а также вспомогательные артефакты, такие как скрипт для запуска jar и, возможно, другие связанные ресурсы. Кстати, я использую Maven для процесса сборки.

Я не слишком знаком с тем, что делает исполняемый файл jar «исполняемым», а также то, что такой файл может фактически содержать, или как он «используется» Java время выполнения. Под этим я подразумеваю, что кажется, что вспомогательные ресурсы (файлы конфигурации и т. Д. c.) Каким-то образом связаны внутри jar-файла, и все же, когда они выполняются, эти ресурсы «видны» jar / runtime.

Быстрый поиск показывает ряд методов для создания исполняемого фляги, и я попробовал несколько методов. Хороший пример на эту тему приведен здесь: https://www.baeldung.com/executable-jar-with-maven.

Хотя они и создают исполняемый файл jar, я не могу понять, как также упаковать jar с помощью скрипта и / или другие ресурсы.

Вот методы, которые я пробовал (до сих пор):

  1. spring-boot-maven-plugin:

    Поскольку мое приложение написано как приложение Spring Boot, имеет смысл использовать этот плагин. Цель repackage может использоваться для «перепаковки» банки в качестве исполняемой. Замечательно (и это прекрасно работает). Но это все, что делает этот плагин. Похоже, что он не обеспечивает возможность создания пакета, поддерживающего файлы сценариев / ресурсов.

    Я могу использовать свой сценарий запуска для запуска jar-файла и передачи любых необходимых ему аргументов. Тем не менее, мне нужно упаковать скрипт и банку вместе, и я не думаю, что этот плагин может сделать это.

  2. maven-assembly-plugin:

    Перед экспериментом Создавая исполняемый jar, я использовал плагин сборки для создания архива (zip), который содержал «простой» jar приложения, каталог lib со всеми зависимостями, а также поддерживающие артефакты: скрипт запуска, файлы конфигурации и т. д. c.

    Плагин также имеет возможность создавать исполняемый файл jar, определяя <archive> в конфигурации плагина. Я экспериментировал с этим, и он действительно создает jar, который, по-видимому, связывает jar приложения, зависимости и также копирует большинство (но не все) связанных артефактов, которые я указал в сборке. xml. Они были помещены в каталог BOOT-INF/classes. Как ни странно, он не скопировал в скрипт запуска. Дело в том, что даже если бы он скопировал скрипт, как бы я его использовал? Он похоронен внутри файла jar!

    Я не могу понять, есть ли способ включить исполняемый jar в zip, чтобы заменить «обычный» jar и каталог lib.

После этих двух попыток я подумал, что, возможно, я мог бы использовать плагин весенней загрузки для создания исполняемого jar, а затем просто собрать плагин сборки с файлами поддержки. Однако это не работает, потому что плагин сборки вызывается перед плагином начальной загрузки в порядке сборки maven.

Есть идеи? Предложения

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...