問題タブ [boot-clj]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
0 に答える
223 参照

clojure - boot-clj watch ビルド -> jar を実行 - OK -> コードを変更 -> jar を実行 - 失敗: クラスが見つかりませんでした

コマンドでjarをビルドすると、コマンドboot build watchで正常に実行できjava -jar target/project.jarます。ソース コードを変更して再構築した後、実行が失敗し、メッセージが表示される

Caused by: java.io.FileNotFoundException: Could not locate my_dir/foo__init.class or my_dir/foo.clj on classpath. Please check that namespaces with dashes use underscores in the Clojure file name.

次のファイル構造があります

build.bootコンテンツ:

foo.cljコンテンツ:

core.cljコンテンツ:

これで実行中です。たとえば、 core.cljboot build watchの内容を に変更すると、再構築を待って、結果の project.jar を実行すると、上記のクラス エラーが見つかりませんでした。最後に、コマンドを使用してコードを手動で再構築し、再実行することで機能しますが、それをやりたいのですが、なぜそのように機能しないのかまったくわかりません。私は起動するのがまったく初めてなので、明らかなことを見逃しているかもしれませんが、それでも知りたいです。何か案は?(println "second run")boot buildboot watch build

起動バージョン

0 投票する
0 に答える
191 参照

unit-testing - boot-clj: gen-class で生成されたクラスの単体テストをビルド/起動する方法

私の clojure プロジェクトでは、gen-classコマンドを使用していくつかの Java クラスを作成しました。彼らは[extractor.yaml YAMLExtractor YAMLExtractorFactory]です。これらのクラスに対して単体テストをビルドしたかったのですが、java.lang.ClassNotFoundException: extractor.yaml.YAMLExtractorテストを実行するとエラーが発生しました。

エラーの原因となるファイル: yaml_extrator_factory.clj

エラーは、テスト中にのみ発生します。プロジェクト全体がエラーなしで AOT コンパイル可能であり、jar ファイルをビルドしても問題ありません。

テストsimple.cljには head が含まれています:

そして、どのクラスが CLASSPATH を出力するかをテストします。yaml-extractor-factory使用されませんでした。テストは次のコマンドで実行されます:

boot aot -a update-classpath run-test -t extractor.simple

ここで、タスクupdate-classpathがクラスパスに追加(get-env :directories)され、run-testがテストを実行します。run-test通常の clojure コードで問題なく動作します。

run-testは、次の内容の私のタスクです。

0 投票する
1 に答える
325 参照

clojure - Clojure/boot の簡単なワークフロー設定を求めている

(a) すべてのソース ファイルが現在のディレクトリにある、(b) ソース ファイルが変更されるたびに単体テストが実行される、(c) 定義を含むソース ファイルが変更されたときに REPL が定義を更新するように、ブートをどのようにセットアップしますか?

具体的には:

  • 何が入りbuild.bootますか?

  • REPL を開始するためのシェル コマンドは何ですか? また、REPL のどのコマンドが単体テストの監視を開始しますか?

  • 他にどのような従来のセットアップを行う必要がありますか?

bootboot-testboot-quick-test、 boot でのREPL リロード、およびboot-refreshに関する多くのドキュメントを読みましたが、あまり機能していません。私がこれまでに見つけたドキュメントは、ちょっとした情報やヒントを提供しているように見えますが、これらをまとめるために必要なものはありません.

適切な (およびその他のもの) の簡単な例build.bootが特に役立ちます。


これまでのところ、これは私が持っている(一種の)作品です。

さらに、現在のディレクトリ内の 1 つのファイルsample.clj:

これにより、起動して現在のディレクトリ内のソース ファイルが検索され、REPLsample.cljを入力して手動で変更を再読み込みできるようになります。ファイルで単体テストを手動で実行していましたが、今試してみると、「間違った数の引数 (0) が渡されました: core/test」というエラーで失敗しました。(refresh)(boot (test)).clj

これを行う正しい方法は何ですか?