简体   繁体   English

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

[英]How to use current builds of rxjava in clojure with leiningen

I want to use some of the latest features being built frequently at https://github.com/Netflix/RxJava in Clojure, but am having some difficulties getting Leiningen to reference the local .jar that I build. 我想在Clojure中使用https://github.com/Netflix/RxJava上经常构建的一些最新功能,但是让Leiningen引用我构建的本地.jar时遇到了一些困难。 The last version of rxjava released to Clojars was 0.9.0, which I can successfully reach with the following in my projects.clj 发布到Clojars的rxjava的最后一个版本是0.9.0,我可以在我的projects.clj中成功到达以下版本。

:dependencies [[org.clojure/clojure               "1.5.1"]
             [com.netflix.rxjava/rxjava-clojure "0.9.0"]]

Now, I do a successful build of the current rxjava sources, which produces the following files 现在,我成功构建了当前的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

In my Clojure project directory, I do the following 在我的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

following the instructions given here: https://gist.github.com/stuartsierra/3062743 (see the bottom) via http://www.pgrs.net/2011/10/30/using-local-jars-with-leiningen/ and leiningen - how to add dependencies for local jars? 按照此处给出的说明操作: https//gist.github.com/stuartsierra/3062743 (见底部), 网址为http://www.pgrs.net/2011/10/30/using-local-jars-with-leiningen /leiningen - 如何为本地jar添加依赖项? .

That reports success and produces the following: 报告成功并产生以下结果:

$ 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

I now fix my projects.clj file to contain the following: 我现在修复我的projects.clj文件以包含以下内容:

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

but lein deps fails to find the local repo 但莱恩德普斯未能找到当地的回购

$ 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.

The following guesses in project.clj also do not work: 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")))}

any ideas how to proceed, please & thanks? 任何想法如何进行,请和谢谢?

(I also answered on the mailing list where you asked this) (我也在邮件列表上回答了你的问题)

The groupId in your deploy-file command is incorrect. deploy-file命令中的groupId不正确。 It should be com.netflix.rxjava . 它应该是com.netflix.rxjava Then in your project.clj , use [com.netflix.rxjava/rxjava-clojure "0.9.1-SNAPSHOT"] for your dependency. 然后在project.clj ,使用[com.netflix.rxjava/rxjava-clojure "0.9.1-SNAPSHOT"]作为依赖项。 Also note that you'll need to do the same with rxjava.core . 另请注意,您需要对rxjava.core执行相同的rxjava.core

from the rxjava project directory run 从rxjava项目目录运行

mvn install

to install the jars to your system's local maven repo. 将罐子安装到系统的本地maven仓库。
from your Clojure project's directory add 0.9.1-SNAPSHOT as a dependency and then 从您的Clojure项目目录添加0.9.1-SNAPSHOT作为依赖项然后

lein deps :tree

and make sure you see the correct version used. 并确保您看到使用的正确版本。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM