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」を実行し、しばらく待ちます。
解決
(1)ANTの特定のバージョンを除外する必要があると彼が言っているかどうかはわかりませんが、AutoDocによって引き込まれたANTのバージョンを除外することで問題を修正できる可能性が高いです(どのバージョンであろうと)。あなたは次のようなことを試すことができます:
(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]]])
AutoDocはビルド中にのみ使用されると仮定して、ここでは開発者依存関係でのみ除外しました。
(2)、あなたは正しいです、Leiningenはスクリプトですが、問題レポートでは、著者はLeiningenのスクリプトの編集を提案して、Leiningenのクラスパスで参照されるディレクトリの順序を変更することで問題を修正しています。