Запуск программы Clojure
Скажем, я создаю программу в clojure, и я должен доставить ее клиенту. у клиента есть некоторые знания в области компьютера, но он не знает/не хочет запускать реплика, загружать мою программу и запускать ее. он хочет дважды щелкнуть файл exe или запустить оболочку script
как мне упаковать мою программу и доставить (сама программа с банками clojure)?
Ответы
Ответ 1
У вас есть несколько вариантов:
- Скомпилируйте программу в классы Java и дайте один основной метод. Упакуйте их в исполняемую банку.
- Наверху, если вы используете Leiningen, вы можете легко собрать все с помощью
lein uberjar
, убедившись, что вы объявили основной класс.
- Вы можете поочередно упаковать свой проект в неисполняемую банку (нет основного класса) и создать оболочку script/пакетный файл для выполнения соответствующего класса, например.
java -cp ./clojure.jar:./myprogram.jar com.my.runthis.class
- Просто упакуйте ваши .clj файлы в банку и используйте оболочку/пакет script, чтобы запустить реплика, а затем автоматически выдавать команды, например.
java -cp ./clojure.jar:./myprogram.jar clojure.main -e "(in-ns 'your-ns)(start-your-program)" -r
Ответ 2
Простейшим подходом было бы позволить leiningen обрабатывать банку для вас, она упаковывает все в единый кусок жира, который вам нужно доставить, как и любое другое приложение Java. Все, что нужно сделать клиенту, - это дважды щелкнуть по нему. Если вам нужен файл .exe launch4j, он может создать его для вас, он также может обрабатывать JRE-установку, если он еще не установлен на клиентах машина. Вам не нужны скрипты bash и т.д.
Ответ 3
Вы можете использовать leiningen для создания uberjar, как писал Грег Харман...
Я лично использую maven для создания автономного jar со всеми зависимостями, объявляю основной класс - это упрощает его запуск с помощью команды java -jar your-jar-file. Я также использую Izpack для создания инсталляторов для своих программ
Ответ 4
Лучший подход, который я нашел для этого, - cake bin
, если вы используете торт. Он будет генерировать пакетный двоичный файл для вас (вероятно, такой же, как или аналогичный launch4j).