Написание установщика Unix для файла Jar

1

Я написал приложение Java, и я создал исполняемый файл Jar, который успешно запускает мое приложение с помощью java -jar myJar.jar. У меня есть исполняемый сценарий оболочки, называемый launchMyProgram который завершает запуск этого Jar (и предлагает различные флаги, такие как --help и т.д.). Мой целевой файл вывода выглядит следующим образом:

$ ls /path/to/MyProject/target/
archive-tmp/      classes/          myJar.jar

Каков стандартный метод для меня, чтобы написать установщик для моего приложения только для Unix? Я предполагаю, что я был бы прав, чтобы удалить исполняемый файл launchMyProgram в /usr/local/bin. Но где я могу поместить файл Jar? Должен ли я сделать свой собственный подкаталог где-то для файлов моей программы? Мне нужно скопировать каталог classes из указанного выше вывода в тот же каталог, что и Jar? Это будет выполняться через Makefile, поэтому пользователи могут переопределить мои варианты.

В принципе, я хочу, чтобы пользователь мог запускать make && make install и иметь возможность запускать мое приложение с помощью launchMyProgram, и я хочу разместить файлы (одну банку, папку "классы" и сценарий оболочки) максимально типичные места возможно.

Теги:
makefile
jar
executable-jar

1 ответ

0

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

Поскольку JAR является ZIP файлом, которому разрешено иметь произвольный префикс, вы можете добавить сценарий оболочки запуска в свою банку, пометить его исполняемым и рассматривать как автономный двоичный файл.

$ echo '#!/bin/bash' > launchMyProgram
$ echo 'exec java -cp "${0}" com.example.program.Main "${@}"' >> launchMyProgram
$ cat myJar.jar >> launchMyProgram
$ chmod +x ./launchMyProgram
$ ./launchMyProgram
Hello, world!

См. " Простые и удобные исполняемые банки" для получения более подробной информации.

Вы должны иметь возможность упаковывать все в classes/ папку в свою банку и все еще работать.


Кроме того, если вы хотите предоставить RPM или DEB-пакеты или что-то для пользователей, fpm делает это очень просто.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню