相关疑难解决方法(0)

建立一个基于构建平台需要不同依赖关系的leiningen项目的优雅方法是什么?

为了进行一些多平台的GUI开发,我刚刚从GTK + Clojure(因为看起来GTK的Java绑定从未被移植到Windows)切换到SWT + Clojure.到目前为止,我已经为Linux构建了一个uberjar.

但问题是,我想为Windows构建一个uberjar,我正试图找到一种管理project.clj文件的简洁方法.

起初,我以为我会将类路径设置为指向SWT库,然后构建uberjar.这需要我在运行jar之前设置一个类路径到SWT库,但无论如何我可能需要一个启动器脚本.但是,leiningen似乎忽略了这个实例中的类路径,因为它总是报告这一点

目前,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)
Run Code Online (Sandbox Code Playgroud)

相关的行是org.eclipse/swt-gtk-linux-x86行.如果我想为Windows做一个uberjar,我必须依赖org.eclipse/swt-win32-win32-x86,另一个用于x86-64,依此类推.

我目前的解决方案是使用不同的project.clj为每个构建环境创建一个单独的分支.这似乎有点像使用半成品来提供一加仑牛奶,但我使用集市进行版本控制,因此分支和重复集成很容易.也许更好的方法是有一个project.linux.clj,project.win32.clj等,但我没有看到任何方法告诉leiningen使用哪个项目描述符.

什么是其他(最好是更优雅)的方式来建立这样的环境?

cross-platform clojure leiningen

13
推荐指数
1
解决办法
1663
查看次数

标签 统计

clojure ×1

cross-platform ×1

leiningen ×1