Rog*_*len 21 clojure leiningen
虽然这可能看似主观,但有一个具体的例子,我想帮助解决.这与Overtone Clojure库https://github.com/overtone/overtone/issues/274的问题有关,似乎应该有Leiningen的"最佳实践",并且适用于比Overtone更多的库.
Overtone是一个clojure库,可以在其他项目中使用.泛音需要本机库工作,所以它使用:native-path "native"在project.clj https://github.com/overtone/overtone/blob/master/project.clj#L69以获得本地scsynth库一条合适的路径[overtone/scsynth "3.5.7.0"]是用过的.
但是,我相信这会重置依赖于Overtone库的项目的传入路径.请参阅问题了解一些背景知识,但基本上在依赖于[overtone "0.9.1"]project.clj之后(System/getProperty "java.library.path")只返回当前本机路径,而使用Overtone的项目无法传递到任何本地库的路径.
所以,问题是 - 依赖项目如何将本地本地库与Overtone混合?Overtone或依赖项目是否应调整其project.clj设置?怎么样?
我通过 Clojars 发布了 clj-nativedep,它可以帮助解决这个问题。该库提供了快速识别当前系统架构的规范化名称的能力,并且可以将任何选定的资源(在 jar 或类路径内)加载到运行时环境中。
请参阅: https: //github.com/rritoch/clj-nativedep
该系统是专门为我的 WarpCTL 项目制作的,该项目利用了 swig 生成的大量本机代码。由于 Clojure 类加载的处理方式,需要通过静态类构造函数加载本机依赖项,您可以在https://github.com/rritoch/WarpCTL/blob/master/extra/JADL-SDK/build/查看示例java/src/com/vnetpublishing/swig/adl/jadl_sdk.java#L13。对于该项目,我将 java 代码构建到 JAR 中,并将 clj-nativedep 和 jar 添加为依赖项。应该可以通过这种方式从纯 clojure 应用程序加载资源,但为了获得最佳性能,需要从静态类构造函数加载。