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

zca*_*ate 3 clojure leiningen

我正在使用具有本机lib依赖性的clojure库.

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

我希望对于使用jre 6的用户来说,使用jre 7为用户添加不同的依赖版本.最好的方法是什么?

这个问题可以在这里看到.

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

Jar*_*314 8

您可以使用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"]]}})
Run Code Online (Sandbox Code Playgroud)

节点:jre6jre7配置文件名称是任意的,也没有做任何超出标准雷音轮廓.我只是使用了有意义的名字,所以它们的用法很明显.

并且,您可以在命令行上使用逗号分隔两个jre6dev配置文件来运行任务.

$ lein with-profiles jre6,dev test
Run Code Online (Sandbox Code Playgroud)

如果你想用一个命令来jar它们,你可以用冒号分隔它们.

$ lein with-profiles jre6:jre7 jar
Run Code Online (Sandbox Code Playgroud)


分类

(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 {}})
Run Code Online (Sandbox Code Playgroud)

在这种情况下,默认配置文件将对应于当前版本,支持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
Run Code Online (Sandbox Code Playgroud)

您可以:classifier:dependencies向量中引用带有关键字的"jre6"jar .

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

此方法受到限制,因为由于生成pom文件的方式,您无法为每个分类的jar指定不同的依赖项.影响jaring的其他设置(例如源目录和AOT)应该有效.