如何在clojure和leiningen中使用rxjava的当前版本

如何在clojure和leiningen中使用rxjava的当前版本,clojure,leiningen,rx-java,Clojure,Leiningen,Rx Java,我想使用Clojure中经常构建的一些最新特性,但是让Leiningen引用我构建的本地.jar有一些困难。向Clojars发布的rxjava的最后一个版本是0.9.0,我可以在projects.clj中通过以下内容成功实现 :dependencies [[org.clojure/clojure "1.5.1"] [com.netflix.rxjava/rxjava-clojure "0.9.0"]] 现在,我成功构建了当前的rxjava源

我想使用Clojure中经常构建的一些最新特性,但是让Leiningen引用我构建的本地.jar有一些困难。向Clojars发布的rxjava的最后一个版本是0.9.0,我可以在projects.clj中通过以下内容成功实现

:dependencies [[org.clojure/clojure               "1.5.1"]
             [com.netflix.rxjava/rxjava-clojure "0.9.0"]]
现在,我成功构建了当前的rxjava源代码,生成了以下文件

/Users/rebcabin/Documents/RxJava/language-adaptors/rxjava-clojure/build/libs/rxjava-clojure-0.9.1-SNAPSHOT-javadoc.jar
/Users/rebcabin/Documents/RxJava/language-adaptors/rxjava-clojure/build/libs/rxjava-clojure-0.9.1-SNAPSHOT-sources.jar
/Users/rebcabin/Documents/RxJava/language-adaptors/rxjava-clojure/build/libs/rxjava-clojure-0.9.1-SNAPSHOT.jar
在我的Clojure项目目录中,我执行以下操作

mvn deploy:deploy-file \
    -DgroupId=local \
    -DartifactId=rxjava-clojure \
    -Dversion=0.9.1-SNAPSHOT \
    -Dpackaging=jar \
    -Dfile=/Users/rebcabin/Documents/RxJava/language-adaptors/rxjava-clojure/build/libs/rxjava-clojure-0.9.1-SNAPSHOT.jar \
    -Durl=file:maven_repository
按照此处给出的说明:(见底部)通过和

报告成功并产生以下结果:

$ find maven_repository/
maven_repository/
maven_repository//local
maven_repository//local/rxjava-clojure
maven_repository//local/rxjava-clojure/0.9.1-SNAPSHOT
maven_repository//local/rxjava-clojure/0.9.1-SNAPSHOT/maven-metadata.xml
maven_repository//local/rxjava-clojure/0.9.1-SNAPSHOT/maven-metadata.xml.md5
maven_repository//local/rxjava-clojure/0.9.1-SNAPSHOT/maven-metadata.xml.sha1
maven_repository//local/rxjava-clojure/0.9.1-SNAPSHOT/rxjava-clojure-0.9.1-20130628.172154-1.jar
maven_repository//local/rxjava-clojure/0.9.1-SNAPSHOT/rxjava-clojure-0.9.1-20130628.172154-1.jar.md5
maven_repository//local/rxjava-clojure/0.9.1-SNAPSHOT/rxjava-clojure-0.9.1-20130628.172154-1.jar.sha1
maven_repository//local/rxjava-clojure/0.9.1-SNAPSHOT/rxjava-clojure-0.9.1-20130628.172154-1.pom
maven_repository//local/rxjava-clojure/0.9.1-SNAPSHOT/rxjava-clojure-0.9.1-20130628.172154-1.pom.md5
maven_repository//local/rxjava-clojure/0.9.1-SNAPSHOT/rxjava-clojure-0.9.1-20130628.172154-1.pom.sha1
maven_repository//local/rxjava-clojure/maven-metadata.xml
maven_repository//local/rxjava-clojure/maven-metadata.xml.md5
maven_repository//local/rxjava-clojure/maven-metadata.xml.sha1
:dependencies [[org.clojure/clojure               "1.5.1"]
             [com.netflix.rxjava/rxjava-clojure "0.9.1"]]
:repositories {"local" ~(str (.toURI (java.io.File. "maven_repository")))}
我现在修复projects.clj文件以包含以下内容:

$ find maven_repository/
maven_repository/
maven_repository//local
maven_repository//local/rxjava-clojure
maven_repository//local/rxjava-clojure/0.9.1-SNAPSHOT
maven_repository//local/rxjava-clojure/0.9.1-SNAPSHOT/maven-metadata.xml
maven_repository//local/rxjava-clojure/0.9.1-SNAPSHOT/maven-metadata.xml.md5
maven_repository//local/rxjava-clojure/0.9.1-SNAPSHOT/maven-metadata.xml.sha1
maven_repository//local/rxjava-clojure/0.9.1-SNAPSHOT/rxjava-clojure-0.9.1-20130628.172154-1.jar
maven_repository//local/rxjava-clojure/0.9.1-SNAPSHOT/rxjava-clojure-0.9.1-20130628.172154-1.jar.md5
maven_repository//local/rxjava-clojure/0.9.1-SNAPSHOT/rxjava-clojure-0.9.1-20130628.172154-1.jar.sha1
maven_repository//local/rxjava-clojure/0.9.1-SNAPSHOT/rxjava-clojure-0.9.1-20130628.172154-1.pom
maven_repository//local/rxjava-clojure/0.9.1-SNAPSHOT/rxjava-clojure-0.9.1-20130628.172154-1.pom.md5
maven_repository//local/rxjava-clojure/0.9.1-SNAPSHOT/rxjava-clojure-0.9.1-20130628.172154-1.pom.sha1
maven_repository//local/rxjava-clojure/maven-metadata.xml
maven_repository//local/rxjava-clojure/maven-metadata.xml.md5
maven_repository//local/rxjava-clojure/maven-metadata.xml.sha1
:dependencies [[org.clojure/clojure               "1.5.1"]
             [com.netflix.rxjava/rxjava-clojure "0.9.1"]]
:repositories {"local" ~(str (.toURI (java.io.File. "maven_repository")))}
但lein deps未能找到本地回购协议

$ lein deps
Could not find artifact com.netflix.rxjava:rxjava-clojure:jar:0.9.1 in central (http://repo1.maven.org/maven2/)
Could not find artifact com.netflix.rxjava:rxjava-clojure:jar:0.9.1 in clojars (https://clojars.org/repo/)
Could not find artifact com.netflix.rxjava:rxjava-clojure:jar:0.9.1 in local (file:/Users/rebcabin/Documents/ClojureProjects/rxjava/expt1/maven_repository/)
This could be due to a typo in :dependencies or network issues.
project.clj中的以下猜测也不起作用:

:dependencies [[org.clojure/clojure               "1.5.1"]
             [com.netflix.rxjava/rxjava-clojure "0.9.1-SNAPSHOT"]]
:repositories {"local" ~(str (.toURI (java.io.File. "maven_repository")))}

:dependencies [[org.clojure/clojure               "1.5.1"]
             [com.netflix.rxjava/rxjava-clojure "0.9.1--20130628.172154-1"]]
:repositories {"local" ~(str (.toURI (java.io.File. "maven_repository")))}

如果您想知道如何继续,请&谢谢?

从rxjava项目目录运行

mvn install
将JAR安装到系统的本地maven repo。
从Clojure项目的目录中添加0.9.1-SNAPSHOT作为依赖项,然后

lein deps :tree
并确保看到使用的版本正确

(我也在邮件列表上回答了您的问题)


deploy文件中的
groupId
命令不正确。它应该是
com.netflix.rxjava
。然后在
project.clj
中,使用
[com.netflix.rxjava/rxjava-clojure“0.9.1-SNAPSHOT”]
作为依赖项。还请注意,您需要对
rxjava执行相同的操作。core

mvn install
正在抱怨没有.pom文件,尽管我可以清楚地看到它
rxjava-clojure-0.9.1-20130628.172154-1.pom
mvn
您指定的目标需要执行一个项目,但此目录中没有POM(/Users/rebcain/Documents/ClojureProjects/rxjava/expt1/maven_repository/local/rxjava clojure/0.9.1-SNAPSHOT)
,但是
ls-la*.POM
找到了上面的文件。线索?从包含rxjava源代码和pom.xml的目录运行它。这将编译rxjava目录,生成一个jar文件,并将jar文件复制到~/.m2/repository/下的本地maven repo,clojure项目的leiningen可以在那里找到它。rxjava使用gradle,而不是maven.ohh,很抱歉,这一假设成功了!我把确切的解决方案放在邮件列表中,以防其他人想看到。