10

Luminus は現在、次の内容で profile.clj を作成しています。

{:provided {:env {;;when set the application start the nREPL server on load
                  :nrepl-port "7001"
                  :database-url "jdbc:mysql://localhost:3306/mysqlkorma_dev?user=db_user_name_here&password=db_user_password_here"}}}

:provided はここで何をしますか? 環境のドキュメントでは、dev 用と test https://github.com/weavejester/environ用の 2 つのエントリがあることを示しているようです。

4

3 に答える 3

3

プロファイルは、:providedjar の作成中に使用できる依存関係を指定するために使用されますが、プロジェクトに依存する他のコードには伝播されません。これらは、jar が使用される環境によって提供されるとプロジェクトが想定する依存関係ですが、プロジェクトの開発中に必要になります。これは、特定のライブラリの独自のコピーを提供する Hadoop などのフレームワークによく使用されます。

--参照

于 2015-07-17T13:28:57.560 に答える
1

@nbergerが言っprovidedたように、クラスパスで利用できる依存関係を指定するために使用されますが、ランタイムによって提供されます。

特定のケースの 1 つは、プロジェクトに含まれていると、uberjar の作成時に署名が台無しになるライブラリです。

これがBouncyCastleの状況です。

したがって、次のproject.cljようになります。

:profiles {:dev {:dependencies [[org.bouncycastle/bcprov-jdk15on "1.50"]]}
           :provided {:dependencies [[org.bouncycastle/bcprov-jdk15on "1.50"]]}}

この状況では、開発にはmavenリポジトリのライブラリを使用できますが、実行時には環境によって提供される必要があると言います。

したがって、元の jar ファイルそのままクラスパスに存在する必要があります。

java -cp bcprov-jdk15on-151.jar:your-standalone.jar clojure.main
于 2015-07-19T01:31:52.657 に答える