我正在使用具有本机lib依赖性的clojure库。
我不想升级到jre 7并失去对jre 6的支持。
我希望对于使用jre 6的用户,使用jre 7为用户添加不同的依赖版本。最好的方法是什么?
这个问题可以在这里看到。
答案 0 :(得分:8)
您可以使用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"]]}})
节点 jre6
和jre7
个人资料名称是任意的,并且不执行标准lein个人资料以外的任何操作。我只是使用了有意义的名字,所以它们的用法很明显。
并且,您可以在命令行上使用逗号分隔jre6
和dev
个配置文件来运行任务。
$ lein with-profiles jre6,dev test
如果你想用一个命令对它们进行jar,你可以用冒号分隔它们。
$ 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
您可以在:classifier
向量中引用带有:dependencies
关键字的“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)应该有效。