私のproject.cliでは、clj-http.clientを使ってテストにのみ使用するclj-httpに依存しています。テスト専用Clojure依存関係
そのプロジェクト用に作成されたuberjarファイルを見ると、この依存関係に関連付けられたクラスfilが含まれていることがわかります。これにより、jarファイルは必要以上に大きくなります。
したがって、テストでのみ使用され、uberjarには含まれないように、クロージャの依存関係を定義する方法はありますか?
私はこれをpom.xmlで行うことができますが、pom.xmlはclojureを使用するときに生成されるため、project.cljファイルで動作するもののみを使用します。
より多くの色を追加するには、私のproject.cljこの
(defproject aproject "0.1.0-SNAPSHOT"
:description "A project"
:dependencies [[org.clojure/clojure "1.8.0"]
[org.clojure/data.json "0.2.6"]
[compojure "1.5.0"]
[hiccup "1.0.5"]
[http-kit "2.1.18"]
[org.clojure/tools.logging "0.3.1"]
[ch.qos.logback/logback-classic "1.1.7"]
[ring/ring-devel "1.4.0"]]
:plugins [[lein-ring "0.9.7"]]
:ring {:handler aproject.core/app-routes}
:main ^:skip-aot aproject.core
:target-path "target/%s"
:resources-paths ["resources/"]
:profiles {:uberjar {:aot :all}
:dev {:dependencies [[peridot "0.4.3"]
[midje "1.8.3"]]
:plugins [[lein-midje "3.2.1"]]
:aliases {"test" ["midje"]}}
:test {:dependencies [[clj-http "3.5.0"]
[midje "1.8.3"]]
:plugins [[lein-midje "3.2.1"]]}
})
のように見える私はこのようなテスト実行している:私は見ています何
lein with-profile test midje :filters dt
されています:
Exception in thread "main" java.io.FileNotFoundException: Could not locate midje/util/ecosystem__init.class or midje/util/ecosystem.clj on classpath., compiling:(/private/var/folders/7l/0fwd_7ls1m19q3_z1_tgg1w80000gn/T/form-init7253661442775183594.clj:1:125)
at clojure.lang.Compiler.load(Compiler.java:7391)
フィルタはおそらくこれには影響しませんが、テストは次のようになります:
(ns aproject.deployment.core
(:require [midje.sweet :refer :all]
[clj-http.client :as client]
[peridot.core :as p]
[clojure.data.json :as json]
[front-end.core :as fe]))
(facts "'aproject' deployed" :dt
(let [response (client/get "http://localhost:8080/ping")]
(response :status) => 200
))
テストプロファイルがトリガーされているのがわかります。私はmidjeとプラグインに依存しているようですが...?
おかげ
ネイサン
あなたはleiningenの ':test'(または':dev')プロファイルに特定の依存関係を追加できます。プロフィールの詳細はこちら:https://github.com/technomancy/leiningen/blob/master/doc/PROFILES.md – leetwinski