Gradle: создайте неисполняемый jar и исполняемый скрипт оболочки с зависимыми библиотеками в качестве дистрибутива пакета - PullRequest
0 голосов
/ 11 марта 2019

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

Я хочу иметь возможность создать отдельный библиотечный jar и создать соответствующие сценарии .sh, которые в значительной степени имеют структуру:

java -cp classpath_libs main_class program_args ...

или любой другой исполняемый файл, где я могу настроить его для своих нужд, но аналогичным образом (например: hadoop jar project_jar main_class classpath_libs program_args). Это достижимо в Gradle? если да, то как? Обратите внимание, мне нужно создать несколько скриптов, используя разные основные классы из одного проекта.

Ключевым требованием здесь является возможность использования окончательной полностью разрешенной строки пути к классам.

ОБНОВЛЕНИЕ: я видел примеры использования плагина application , но он создает исполняемый файл jar с упакованными в него зависимыми библиотеками. Это НЕ то, что я ищу.

1 Ответ

0 голосов
/ 20 марта 2019

Насколько я обнаружил, похоже, что нет плагина, который бы обрабатывал это напрямую. Итак, я использовал плагин java-library, использовал значение configurations.runtime classpath и создал необходимые сценарии и задачу копирования, чтобы скопировать необходимые библиотеки в нужные каталоги. Для всех, кто заинтересован, вы также можете попробовать опцию distZip в плагине application, где gradle создает сценарии для выполнения и упаковывает необходимые библиотеки в дистрибутив. Вы можете взглянуть на выходные данные скрипта, чтобы увидеть, как структурирован путь к классам, и создать нечто подобное.

...