2017-05-17 13 views
1

私の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とプラグインに依存しているようですが...?

おかげ

ネイサン

+4

あなたはleiningenの ':test'(または':dev')プロファイルに特定の依存関係を追加できます。プロフィールの詳細はこちら:https://github.com/technomancy/leiningen/blob/master/doc/PROFILES.md – leetwinski

答えて

1

その後、lein with-profile test midje :filters dtでテストを実行し、:testプロファイルに追加します。いつものようにuberjarを生成してください。lein uberjarには、余分なファイルは含まれません。