我正在开发一个具有本机 lib 依赖项的 clojure 库。
我不想升级到 jre 7 并失去对 jre 6 的支持。
我希望使用 jre 6 的用户包含与使用 jre 7 的用户不同的依赖版本。最好的方法是什么?
这个问题可以在这里看到。
我正在开发一个具有本机 lib 依赖项的 clojure 库。
我不想升级到 jre 7 并失去对 jre 6 的支持。
我希望使用 jre 6 的用户包含与使用 jre 7 的用户不同的依赖版本。最好的方法是什么?
这个问题可以在这里看到。
您可以将Leiningen 配置文件或分类器用于您正在谈论的内容。
(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
您将使用向量中的关键字引用“jre6”jar :dependencies
。
(defproject tester1 "0.1.0-SNAPSHOT"
:dependencies [[org.clojure/clojure "1.5.1"]
[sigmund "0.2.0" :classifier "jre6"]])
这种方法是有限的,因为由于 pom 文件的生成方式,你不能为每个分类的 jar 指定不同的依赖关系。其他影响 jaring 的设置,例如源目录和 AOT,应该可以工作。