13

如果我启用 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。为什么这些包需要它,我在哪里可以得到它。

4

6 回答 6

7

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

解决此问题的一种方法是将所需的 jar 安装到本地存储库中。(我似乎不记得确切的命令......会在一分钟内查找它。请参阅此页面以获取说明。)然后 Maven 会从那里拿起它们。

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

哦,关于超级 POM——来自Maven 文档中的这个页面:

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

至于它是如何进入您的错误消息的,我真的不知道。您可以在这个问题中添加“maven”标签,或者只用该标签提出一个单独的问题,让一些 Maven 专家参与其中。

于 2010-03-14T22:36:01.437 回答
2

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

我的解决方案是访问http://clojars.org并搜索我需要的库。通常有几个版本。我在http://github.com上做了一些研究,看看哪个是最新的。然后我尝试将其作为依赖项。如果它有效,那就太好了!否则,我尝试另一个。

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

于 2010-03-23T14:40:04.640 回答
1

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

$ sudo lein deps

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

于 2010-09-16T04:07:50.453 回答
1

大约一年前,我不小心将 swank-clojure 上传到了 org.clojure 组。由于我与该组没有关联,因此我很快将其删除,所以这就是找不到它的原因。请问您在哪里找到错误版本的说明以便可以更正?

于 2010-09-17T02:24:18.837 回答
0

我有一个与 lein-ring 类似的问题,导致org.apache.maven:super-pom. 原来问题是M2_HOME设置为我用于工作的 Maven 版本。取消设置M2_HOME解决了这个问题。看起来 leiningen 不适合奇怪的 Maven 实现。

于 2011-02-10T07:22:40.743 回答
0

Ubuntu 10.10 x86_64lein deps 一起,我很烦人……缺少 5 个必需的工件。

对于工件:

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

...但是命令

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

做这项工作。

于 2011-04-19T20:50:24.747 回答