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)
что такое супер-пом.зачем это нужно этим пакетам и где я могу это получить.
Решение
Я думаю, это просто означает, что Maven не смог удовлетворить указанные вами зависимости.Я проверил, нет org.clojure/swank-clojure
артефакт в любом из трех репозиториев, упомянутых в вашем сообщении.Для Clojure-couchdb — версия, которую вы используете — насколько я могу судить по его файл project.clj на GitHub -- зависит от org.clojure/clojure-http-client "1.0.0-SNAPSHOT"
, которого также нет в репозиториях.
Один из способов решения этой проблемы — установить нужные jar-файлы в локальный репозиторий.(Я не могу вспомнить точную команду...посмотрю через минуту. См., например. эта страница инструкции.) Тогда Maven просто заберет их оттуда.
(Кстати, если вы хотите использовать Clojure + contrib 1.1.0, вы можете просто использовать "1.1.0"
как строки версии сейчас.Это для обоих org.clojure/clojure
и org.clojure/clojure-contrib
.)
Да, и насчет супер ПОМ - от эта страница в документах Maven:
Super POM — это POM Maven по умолчанию.Все POM расширяют Super POM, если они не заданы явно. Это означает, что конфигурация, указанная в Super POM, наследуется POM, созданными вами для ваших проектов.
Что касается того, как это попало в ваше сообщение об ошибке, я, честно говоря, понятия не имею.Вы можете добавить к этому вопросу тег «maven» или просто задать отдельный вопрос с этим тегом, чтобы привлечь к нему внимание некоторых гуру Maven.
Другие советы
Я думаю, что в проектах все еще распространено нарушение зависимостей.Это прискорбно, потому что это действительно портит впечатления.
Мое решение - перейти http://clojars.org и найду нужную мне библиотеку.Обычно существует несколько версий.Я провожу небольшое исследование http://github.com чтобы увидеть, какой из них наиболее актуален.Затем я пробую это как зависимость.Если это работает, отлично!В противном случае я попробую другой.
Это долгий процесс, но я думаю, что ситуация становится лучше.Вы бы видели этот процесс раньше!
Я получаю ту же ошибку в зависимости от maven super-pom, и когда я это делаю
$ sudo lein deps
Он работает без ошибок.Не идеальное решение, но мне подходит.
Около года назад я случайно загрузил swank-clojure в группу org.clojure.Вскоре я удалил его, так как не связан с этой группой, поэтому его невозможно найти.Можно спросить, где вы нашли инструкцию с ошибочной версией, чтобы ее можно было исправить?
У меня была аналогичная проблема с lein-ring, вызывающая сбой зависимости в отношении org.apache.maven:super-pom
.Оказывается, проблема заключалась в том, что M2_HOME
была установлена версия Maven, которую я использую для работы.Выбивающий из колеи M2_HOME
исправлена проблема.Похоже, что лейнинген плохо справляется со странными реализациями 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
делай свою работу.