Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/clojure/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Clojure 莱宁根:错过超级pom_Clojure_Maven_Leiningen - Fatal编程技术网

Clojure 莱宁根:错过超级pom

Clojure 莱宁根:错过超级pom,clojure,maven,leiningen,Clojure,Maven,Leiningen,如果我启用clojure couchdb或swank clojure,则lein deps会失败,因为org.apache.maven:super pom:jar:2.0缺失 :dependencies [[org.clojure/clojure "1.1.0-master-SNAPSHOT"] [org.clojure/clojure-contrib "1.0-SNAPSHOT"] [clojure-http-client "1.0.

如果我启用clojure couchdb或swank clojure,则
lein deps
会失败,因为org.apache.maven:super pom:jar:2.0缺失

:dependencies [[org.clojure/clojure "1.1.0-master-SNAPSHOT"]
               [org.clojure/clojure-contrib "1.0-SNAPSHOT"]
               [clojure-http-client "1.0.0-SNAPSHOT"]
               [org.apache.activemq/activemq-core "5.3.0"]
;              [org.clojars.the-kenny/clojure-couchdb "0.1.3"]
;              [org.clojure/swank-clojure "1.1.0"]
              ])
此错误:

  Path to dependency: 
1) org.apache.maven:super-pom:jar:2.0
2) org.clojure:swank-clojure:jar:1.1.0

----------
1 required artifact is missing.

for artifact: 
 org.apache.maven:super-pom:jar:2.0

from the specified remote repositories:  
  clojars (http://clojars.org/repo/),
  clojure-snapshots (http://build.clojure.org/snapshots),
  central (http://repo1.maven.org/maven2)

什么是超级pom。为什么这些包需要它,我在哪里可以得到它。

我认为这只是意味着Maven无法满足您指定的依赖项。我已经检查过,在您的消息提到的三个存储库中都没有
org.clojure/swank-clojure
工件。对于clojure couchdb,您正在使用的版本——据我所知——取决于
org.clojure/clojure-http-client“1.0.0-SNAPSHOT”
,而repos中也不存在该版本

解决这个问题的一种方法是将您想要的jar安装到本地repo中。(我似乎记不起确切的命令……我会在一分钟内查找它。有关说明,请参阅示例。)然后Maven将从那里拾取它们

(顺便说一句,如果您想使用Clojure+contrib 1.1.0,您现在可以使用
“1.1.0”
作为版本字符串。这适用于
org.Clojure/Clojure
org.Clojure/Clojure contrib

哦,关于超级POM——来自Maven的文档:

超级POM是Maven的默认POM。除非显式设置,否则所有POM都会扩展超级POM,这意味着超级POM中指定的配置由您为项目创建的POM继承


至于它是如何进入你的错误信息的,我真的不知道。您可以将“maven”标记添加到这个问题中,或者只需使用该标记问一个单独的问题,就可以让一些maven专家加入到这个问题中。

我认为项目打破依赖关系仍然很常见。这是不幸的,因为它确实破坏了这种体验

我的解决办法是继续搜索我需要的库。通常有几个版本。我做了一些研究,看看哪一个是最新的。然后我试着把它作为一种依赖。如果有效,那就太好了!否则,我试试另一个


这是一个漫长的过程,但我认为它正在变得更好。你以前应该看过这个过程

我在maven super pom依赖项上得到了相同的错误,当我这样做时

$ sudo lein deps

它运行无误。这不是一个理想的解决方案,但它对我很有效。

大约一年前,我意外地将swank clojure上传到org.clojure组。我很快就把它删除了,因为我和那个群人没有联系,所以找不到它。我可以问一下您是在哪里找到错误版本的说明的,以便更正吗?

我遇到了与lein ring类似的问题,导致了与
org.apache.maven:super pom
相关的依赖性故障。原来问题是
M2_HOME
被设置为我工作时使用的Maven版本。取消设置
M2\u HOME
修复了该问题。leiningen似乎不能很好地处理奇怪的Maven实现

有了
Ubuntu 10.10 x86_64
,有了lein deps,我会很恼火 ... 缺少5个必需的工件

对于工件:

org.apache.maven:super-pom:jar:2.0
。。。 但是命令

sudo LEIN_ROOT=1 ~/bin/lein deps;
sudo chown -R $USER:$USER lib 

做这项工作。

顺便说一句,我不确定这是否是正确答案的一部分,但如果您只是为了使用
lein Swank
而包含Swank依赖项,则应该使用
leiningen/lein Swank“1.1.0”
。另外,把它放在你的
:dev dependencies
(请注意,它们现在仍然包含在uberjars中,但也许有一天lein会更聪明…)中。实际上,我两者都在使用。leain swank作为buld dep,swank作为“远程控制”进入正在运行的服务器。(这很可能会在我们发货时消失)斯旺克正式成为尼托!没错。:-)对于嵌入式swank,可以使用
swank clojure“1.1.0”
依赖项;有关可用版本的列表(种类),请参阅。我已经用
lein deps
测试过了,效果很好!好的,我想我有一个主意可能对你有用。。。将
org.clojure/clojure http client
放在
中的
:exclusions
列表中,让您的项目明确依赖
clojure http client
(我认为不需要groupId;Clojars的当前版本似乎是
1.0.0-SNAPSHOT
)?通过这种方式,
clojure couchdb
应该能够找到它所需要的所有
clojure http客户端的命名空间,而lein/Maven将能够获取您的DEP。我认为您必须使用
clojure-couchdb
运行一些代码来测试这一点;让我知道它是如何工作的。sudo lein deps将把deps安装到/root/.m2而不是/home/you/.m2/首先删除/home/you/.m2/?可能会得到相同的结果。我的Mac上没有/root,但至少删除了.m2修复了它。当然,我还必须重新安装Leiningen。请参阅我的解决方案。由于sudo在超级用户shell中运行,因此您的
M2_HOME
环境设置不会影响工作。我与lein有相同的超级pom问题,结果证明clojure的maven缓存中的maven-metadata-clojure-releases.xml已损坏。它包含了lein的输出,告诉我它不知道在哪里可以找到依赖项,因为它无法连接到我的Nexus安装。