gpt4 book ai didi

clojure - 如何根据 jvm 版本号指定 lein 库依赖项

转载 作者:行者123 更新时间:2023-12-01 09:28:05 25 4
gpt4 key购买 nike

我正在开发一个具有 native lib 依赖项的 clojure 库。

我不想升级到 jre 7 并失去对 jre 6 的支持。

我希望使用 jre 6 的用户包含与使用 jre 7 的用户不同的依赖版本。最好的方法是什么?

问题可以在这里看到。

https://github.com/zcaudate/sigmund/issues/2

最佳答案

您可以使用 Leiningen profiles或您正在谈论的分类器。

个人资料

(defproject im.chit/sigmund "0.2.0"
:description "System analytics for Clojure"
:dependencies [[org.clojure/clojure "1.5.1"]]
:profiles {:dev {:dependencies [[midje "1.5.0"]]}
:jre6 {:jar-name "sigmund-jre6.jar"
:dependencies [[sigar/sigar "1.7.0-v20131027"]
[sigar/sigar-native-deps "1.7.0-v20131027"]]}
:jre7 {:jar-name "sigmund-jre7.jar"
:dependencies [[sigar/sigar "1.7.0-v20131027"]
[sigar/sigar-native-deps "1.7.0-v20131027"]]}})

节点: jre6jre7 配置文件名称是任意的,并且做任何超出标准的事情莱茵简介。我只是使用了有意义的名称,因此它们的用途很明显。

而且,您可以在命令行上使用 jre6dev 配置文件运行任务,方法是用逗号分隔它们。

$ lein with-profiles jre6,dev test

如果你想用一个命令来压缩它们,你可以用冒号分隔它们。

$ lein with-profiles jre6:jre7 jar


分类器

(defproject im.chit/sigmund "0.2.0"
:description "System analytics for Clojure"
:dependencies [[org.clojure/clojure "1.5.1"]
[sigar/sigar "1.7.0-v20131027"]
[sigar/sigar-native-deps "1.7.0-v20131027"]]
:classifiers [["jre6" :jre6]]
:profiles {:dev {:dependencies [[midje "1.5.0"]]}
:jre6 {}})

在这种情况下,默认配置文件将对应于当前版本,支持 JRE 7,而 :jre6 配置文件将用于以前的版本。

$ lein jar
Created /Users/user1/sigmund/target/sigmund-0.2.0.jar
Created /Users/user1/sigmund/target/jre6/sigmund-0.2.0-jre6.jar

您可以在 :dependencies 向量中使用 :classifier 关键字来引用“jre6”jar。

(defproject tester1 "0.1.0-SNAPSHOT"
:dependencies [[org.clojure/clojure "1.5.1"]
[sigmund "0.2.0" :classifier "jre6"]])

这种方法是有限制的,因为由于pom文件的生成方式,你不能为每个分类的jar指定不同的依赖。影响 jaring 的其他设置(例如源目录和 AOT)应该可以工作。

关于clojure - 如何根据 jvm 版本号指定 lein 库依赖项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19617168/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com