Запуск программы Clojure

скажем, я создаю программу в clojure и должен доставить ее клиенту. у клиента есть некоторые знания компьютера, но он не знает / не хочет запускать repl, загружать мою программу и запускать ее. он хочет дважды щелкнуть исполняемый файл или запустить сценарий оболочки

как мне упаковать мою программу и доставить (сама программа с банками clojure)?


person Belun    schedule 29.08.2010    source источник


Ответы (4)


У вас есть несколько вариантов:

  • Скомпилируйте программу в классы Java и дайте одному из них метод main. Упакуйте их в исполняемый jar.
  • Как сказано выше, если вы используете Leiningen, вы можете все красиво собрать с помощью lein uberjar, убедившись, что вы объявили основной класс.
  • Вы можете поочередно упаковать свой проект в неисполняемый jar (без основного класса) и создать сценарий/пакетный файл оболочки для выполнения соответствующего класса, например. java -cp ./clojure.jar:./myprogram.jar com.my.runthis.class
  • Просто упакуйте свои файлы .clj в банку и используйте сценарий оболочки/пакета, чтобы запустить repl, а затем автоматически выполнять команды, например. java -cp ./clojure.jar:./myprogram.jar clojure.main -e "(in-ns 'your-ns)(start-your-program)" -r
person G__    schedule 29.08.2010
comment
о параметрах clojure.main: -e означает выполнить? -r означает что? где можно прочитать о них? спасибо - person Belun; 29.08.2010
comment
-e означает оценку -r означает запуск реплики. Варианты описаны на странице clojure.org/repl_and_main. - person G__; 29.08.2010

Простейшим подходом было бы позволить leiningen обрабатывать банку для вас, он упакует все в одну толстую банку, и это все, что вам нужно доставить, как и любое другое приложение Java. Все, что нужно сделать клиенту, это дважды щелкнуть по нему. Если вам нужен файл .exe, launch4j может создать его для вас, он также может выполнить установку JRE, если это не так. уже установлен на клиентской машине. Вам не нужны никакие bash-скрипты и т. д.

person Hamza Yerlikaya    schedule 29.08.2010

Вы можете использовать leiningen для создания uberjar, как писал Грег Харман... Я лично использую maven для создания автономной банки со всеми зависимостями, объявляю основной класс - это упрощает его запуск с помощью команды "java -jar your-jar-file". Я также использую Izpack для создания инсталляторов для своих программ.

person Alex Ott    schedule 29.08.2010

Лучший способ, который я нашел для этого, — cake bin, если вы используете торт. Он сгенерирует для вас упакованный двоичный файл (вероятно, такой же или похожий на launch4j).

person Damon Snyder    schedule 11.07.2011