【问题标题】:How to use current builds of rxjava in clojure with leiningen如何通过 leiningen 在 clojure 中使用 rxjava 的当前版本
【发布时间】:2013-06-26 13:52:23
【问题描述】:

我想使用 Clojure 中 https://github.com/Netflix/RxJava 经常构建的一些最新功能,但在让 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

按照此处给出的说明:https://gist.github.com/stuartsierra/3062743(见底部)通过http://www.pgrs.net/2011/10/30/using-local-jars-with-leiningen/leiningen - how to add dependencies for local jars?

报告成功并生成以下内容:

$ 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

我现在修复我的 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")))}

但是 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")))}

任何想法如何进行,请&谢谢?

【问题讨论】:

    标签: clojure leiningen rx-java


    【解决方案1】:

    (我也在邮件列表中回答了你提出的问题)

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

    【讨论】:

    【解决方案2】:

    从rxjava项目目录运行

    mvn install
    

    将 jar 安装到系统的本地 maven 存储库。
    从 Clojure 项目的目录中添加 0.9.1-SNAPSHOT 作为依赖项,然后

    lein deps :tree
    

    并确保您看到使用的正确版本。

    【讨论】:

    • mvn install 抱怨没有 .pom 文件,尽管我可以清楚地看到它rxjava-clojure-0.9.1-20130628.172154-1.pom ... mvnThe goal you specified requires a project to execute but there is no POM in this directory (/Users/rebcabin/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 中,其中 leiningen 形式的 clojure 项目可以找到它。
    • rxjava 使用 gradle,而不是 maven。
    • 哦,对不起这个假设
    猜你喜欢
    • 1970-01-01
    • 2014-10-17
    • 1970-01-01
    • 2014-01-15
    • 1970-01-01
    • 2011-01-09
    • 2013-04-22
    • 2023-03-29
    • 1970-01-01
    相关资源
    最近更新 更多