Как исключить банки из проекта leiningen?

При использовании Leiningen возникла следующая резкая ошибка:

Исключение в потоке "main" java.lang.NoSuchMethodError: org.apache.tools.ant.util.FileUtils.getFileUtils () Lorg / apache / tools / ant / util / FileUtils; (core.clj: 1)

Я нашел следующий ответ на странице https://github.com/technomancy/leiningen/issues/194:

if ant version 1.6.1 is included in a project, lein fails. Autodoc "0.7.1" includes ant version 1.6.1.

a work around is to exclude ant.1.6.1 in the project.clj.    <--- *1*
But a better solution is changing the order of lein classpath.

from bin/lein   <--- *2*
CLASSPATH="$CLASSPATH:$LEIN_LIBS:$LEIN_DIR/src:$LEIN_DIR/classes:$LEIN_DIR/resources:$LEIN_JAR"
**changes to : **
CLASSPATH="$LEIN_LIBS:$LEIN_DIR/src:$LEIN_DIR/classes:$LEIN_DIR/resources:$LEIN_JAR;$CLASSPATH"

Я прочитал учебник Leiningen по адресу https://github.com/technomancy/leiningen/blob/master/doc/TUTORIAL.md и образец файла project.clj по адресу https://github.com/technomancy/leiningen/blob/stable/sample.project.clj, но у меня все еще есть следующие вопросы:

1) В строке, отмеченной 1 выше, я не могу сказать, как исключить конкретную версию файла jar.

2) В 2 выше, что именно означает bin/lein? В моем проекте Leiningen нет каталога bin, а сам Leiningen является скриптом, так что там нет каталога bin?

Большое спасибо за вашу помощь.


Приложение 8/6/11: Что касается конкретной проблемы с Autodoc, я нашел ответвление Autodoc, которое решает проблему для меня. Просто добавьте "[org.clojars.weavejester / autodoc" 0.9.0 "]" в предложение project.clj> defproject> :dev-dependencies. Затем из командной строки (с каталогом, равным корню вашего проекта leiningen) выполните 'lein autodoc' и немного подождите.


person Gregg Williams    schedule 23.07.2011    source источник


Ответы (1)


В ответ на (1) я не уверен, говорит ли он, что вам нужно исключить определенную версию Ant, но более вероятно, что вы можете решить проблему, исключив версию Ant, загруженную Autodoc (независимо от того, какая версия ). Вы можете попробовать что-то вроде:

(defproject my-project "1.0.0"
  :dependencies [[org.clojure/clojure "1.2.0"]
                 [org.clojure/clojure-contrib "1.2.0"]]
  :dev-dependencies [[autodoc "0.7.1" :exclusions [org.apache.ant/ant]]])

Я исключил его только в dev-dependencies здесь, предполагая, что Autodoc должен использоваться только во время сборки.

Для (2) вы правы, Leiningen - это сценарий, но в отчете о проблеме автор предлагает отредактировать сценарий Leiningen, чтобы исправить проблему, изменив порядок каталогов, указанных в CLASSPATH Leiningen.

person Scott    schedule 23.07.2011