Для разработки мультиплатформенного графического интерфейса я только что переключился с GTK + Clojure (поскольку похоже, что привязки Java для GTK никогда не переносились на Windows) на SWT + Clojure. Пока все хорошо, что я создал Uberjar для Linux.
Однако подвох заключается в том, что я хочу создать Uberjar для Windows и пытаюсь найти простой способ управления файлом project.clj.
Сначала я решил установить classpath, чтобы он указывал на библиотеки SWT, а затем создал Uberjar. Это потребовало бы, чтобы я установил classpath для библиотек SWT перед запуском jar, но в любом случае мне, вероятно, понадобится скрипт запуска. Однако в этом случае leiningen игнорирует classpath, потому что всегда сообщает, что
В настоящее время для меня project.clj выглядит так:
(defproject alyra.mana-punk/character "1.0.0-SNAPSHOT"
:description "FIXME: write"
:dependencies [[org.clojure/clojure "1.2.0"]
[org.clojure/clojure-contrib "1.2.0"]
[org.eclipse/swt-gtk-linux-x86 "3.5.2"]]
:main alyra.mana-punk.character.core)
Соответствующей строкой является строка org.eclipse / swt-gtk-linux-x86. Если я хочу сделать uberjar для Windows, я должен зависеть от org.eclipse / swt-win32-win32-x86, и еще один для x86-64 и т. Д. И т. Д.
Мое текущее решение - просто создать отдельную ветвь для каждой среды сборки с другим project.clj. Это похоже на использование полуфабриката для доставки одного галлона молока, но я использую базар для контроля версий, так что ветвление и повторяющиеся интеграции просты. Может быть, лучше бы иметь project.linux.clj, project.win32.clj и т. Д., Но я не вижу способа сообщить leiningen, какой дескриптор проекта использовать.
Каковы другие (желательно более элегантные) способы создания такой среды?