莱宁根:失去了超级pom

时间:2010-03-14 22:17:27

标签: 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.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。为什么这些包需要它,我在哪里可以得到它。

6 个答案:

答案 0 :(得分:7)

我认为这只是意味着Maven无法满足您指定的依赖关系。我已经检查过你的邮件提到的三个存储库中的任何一个都没有org.clojure/swank-clojure工件。对于clojure-couchdb,你正在使用的版本 - 据我所知its project.clj file on GitHub - 取决于org.clojure/clojure-http-client "1.0.0-SNAPSHOT",它在回购中也不存在。

解决此问题的一种方法是将您想要的罐子安装到本地仓库中。 (我似乎无法记住确切的命令......会在一分钟内查找。请参阅例如this page获取指示。)然后Maven将从那里接收它们。

(顺便说一句,如果您想使用Clojure + contrib 1.1.0,您现在可以使用"1.1.0"作为版本字符串。这适用于org.clojure/clojureorg.clojure/clojure-contrib。)< / p>

哦,关于超级POM - 来自Maven的文档中的this page

  

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

至于它如何进入你的错误信息,我真的不知道。你可以在这个问题上添加“maven”标签,或者只是问一个带有该标签的问题,让一些Maven专家加入其中。

答案 1 :(得分:2)

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

我的解决方案是转到http://clojars.org并搜索我需要的库。通常有几个版本。我对http://github.com进行了一些研究,看看哪一个是最新的。然后我尝试将其作为依赖。如果它工作,太棒了!否则,我会尝试另一个。

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

答案 2 :(得分:1)

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

$ sudo lein deps

它运行没有错误。不是一个理想的解决方案,但它对我有用。

答案 3 :(得分:1)

我在一年前意外地将swank-clojure上传到了org.clojure组。我之后很快就删除了它,因为我没有与该组相关联,因此无法找到它。我可以问你在哪里找到错误版本的说明,以便纠正吗?

答案 4 :(得分:0)

我遇到类似的lein-ring问题导致org.apache.maven:super-pom依赖失败。事实证明问题是M2_HOME被设置为我用于工作的Maven版本。取消设置M2_HOME解决了问题。 leiningen似乎与奇怪的Maven实现不一致。

答案 5 :(得分:0)

使用Ubuntu 10.10 x86_64和lein deps,我很讨厌 ... 缺少5个必需的工件。

for artifact:

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

... 但命令

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

做好这份工作。