我在本地构建了一个clojure lib(lib1)并将其发布到github和clojars,然后我更改了它的版本并在本地发布。
lein install
# =>
Created /home/me/projects/clojure/my-lib1/target/my-lib1-0.1.0.jar
Wrote /home/me/projects/clojure/my-lib1/pom.xml
Installed jar and pom into local repo.
然后我创建了另一个项目(project2)并在其中执行了此操作:
# project.clj:
;;.............
:license {:name "Eclipse Public License"
:url "http://www.eclipse.org/legal/epl-v10.html"}
:dependencies [[org.clojure/clojure "1.7.0"]
[my-lib1 "0.1.0"]]
当我跑“lein deps”时,我得到了这个:
Could not find artifact my-lib1:my-lib1:jar:0.1.0 in central (https://repo1.maven.org/maven2/)
Could not find artifact my-lib1:my-lib1:jar:0.1.0 in clojars (https://clojars.org/repo/)
This could be due to a typo in :dependencies or network issues.
If you are behind a proxy, try setting the 'http_proxy' environment variable.
为什么“中心”和“clojars”?为什么不在本地寻找呢?
在本地仓库m2中,其全名是路径:
~/.m2/repository/org/clojars/my_nickname/my-lib1/
答案 0 :(得分:1)
如果.m2
中的路径是“〜/ .m2 / repository / org / clojars / my_nickname / my-lib1 /”,那么您的project.clj
应如下所示:
# project.clj:
;;.............
:dependencies [[org.clojure/clojure "1.7.0"]
[my_nickname/my-lib1 "0.1.0"]]
要查找路径,您可以查看.m2
中生成的数据。
举个例子,因为你没有张贴你的。
对于这样的maven-metadata-local.xml
:
<?xml version="1.0" encoding="UTF-8"?>
<metadata>
<groupId>cljsjs</groupId>
<artifactId>react-mdl</artifactId>
<versioning>
<release>1.3.0-0</release>
<versions>
<version>1.3.0-0</version>
</versions>
<lastUpdated>20160202194200</lastUpdated>
</versioning>
</metadata>
或类似.pom
:
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>cljsjs</groupId>
<artifactId>react-mdl</artifactId>
<version>1.3.0-0</version>
<name>react-mdl</name>
<description>React Components wrapper for Material Design Lite UI http://tleunen.github.io/react-mdl/</description>
<url>http://tleunen.github.io/react-mdl/</url>
...
您可以使用[cljsjs/react-mdl "1.3.0-0"]
,因为语法是groupId / artifactId。如果它们都是相同的,你只能放一个(如你第一次尝试的那样)。因此,请检查~.m2
存储库中的正确字段。
答案 1 :(得分:0)
也许莱恩仍然认为jar资源是外部资源。事实上即使目录的名称中有'clojars',在这方面也是非常可疑的。 (我的.m2目录没有这样的外部名称。)
如果您使用不同的文件名 - 例如将-SNAPSHOT
放在最后,然后安装它,lein应该知道-SNAPSHOT
文件是本地文件,并在本地查找。
如果那对您有用,那么很棒。我意识到它并没有完全回答你的问题。我不明白为什么lein并不总是从外部和本地看。但那时'clojars'是可疑的。
编辑查看我的其他答案 - 'clojars'很可能来自您的lein项目的名称。
答案 2 :(得分:0)
我遇到了同样的问题并修复了它。在我的例子中,它是project.clj文件的defproject。这是一个不会在本地看起来的那个:
(defproject org.clojars.cjmurphy/default-db-format "0.1.0"
将它放回原位使它再次在本地看起来:
(defproject default-db-format "0.1.0"