Как исключить банки из проекта leiningen? - PullRequest
6 голосов
/ 23 июля 2011

При использовании 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"

Я прочитал учебник Лейнингена в 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?

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


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

1 Ответ

11 голосов
/ 23 июля 2011

В ответ на (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-зависимостях, предполагая, что Autodoc должен использоваться только во время сборки.

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

...