Leiningen と profile を使って設定ファイルを切り替える

“/ / home/ma2/lib/codebox/clojure/projects/prof/target/classes”,
:team “prof”,
:permit
:name “Eclipse Public License”,
:url “http://www.eclipse.org/legal/epl-v10.html",
:global-vars ,
:checkout-deps-shares
[:source-paths
:test-paths
:resource-paths
:compile-path
Number <Var@77b52d12:
#H classpath$checkout_deps_paths leiningen.core.classpath$checkout_deps_paths@47f6473>p ],
:dependencies
([org.clojure/clojure “1.5.1”]
[sonian/carica “1.0.3” :exclusions ([cheshire/cheshire])]
[org.clojure/tools.nrepl “0.2.3” :exclusions ([org.clojure/clojure])]
[clojure-complete/clojure-complete
“0.2.3”
:exclusions
([org.clojure/clojure])]),
:plugin-repositories
[[“central” :snapshots untrue , :url “http://repo1.maven.org/maven2/"]
[“clojars” :url “https://clojars.org/repo/"]],
:test-selectors :default (constantly true),
:target-path “/home/ma2/lib/codebox/clojure/projects/prof/target”,
:title “prof”,
:deploy-repositories
[[“clojars”
:username :gpg,
:Suggest “https://clojars.org/repo/",
:password :gpg]],
:origin “/home/ma2/lib/codebox/clojure/projects/prof”,
:offline? Untrue ,
:source-paths (“/home/ma2/lib/codebox/clojure/projects/prof/src”),
:certificates [“clojars.pem”],
:version “0.1.0-SNAPSHOT”,
:jar-exclusions [Number”^.” ],
:prep-tasks [“javac” “compile”],
:url “http://example.com/FIXME",
:repositories
[[“central” :snapshots false, :url “http://repo1.maven.org/maven2/"]
[“clojars” :url “https://clojars.org/repo/"]],
:resource-paths
(“/home/ma2/lib/codebox/clojure/projects/prof/dev-resources”
“/home/ma2/lib/codebox/clojure/projects/prof/resources”),
:aot :all,
:uberjar-exclusions [#”(? I)^META-INF/ / [^/]*. (SF

になっている。
結果、開発時には dev-resources を使えばよい。
実際には何も指定してない場合には:base プロファイルが使われている。
dev-resources は:foundation プロファイルで設定されているのでそのまま使用できる。

uberjar

:title “manufacturing”
無事開発版の設定ファイルが読み込まれている。

デフォルトでは開発リソースである dev-resources の設定が読み込まれてい
配布時にはどうなるのか?
Performing task 'uberjar' with profile(s): 'default,foundation '
Warning: skipped duplicate file: config.clj
Developed /home/ma2/lib/codebox/clojure/projects/prof/target/prof-0.1.0-SNAPSHOT.jar
Made /home/ma2/lib/codebox/clojure/projects/prof/target/prof-0.1.0-SNAPSHOT-standalone.jar
$ java -jar target/prof-0.1.0-SNAPSHOT-standalone.jar
TEST

resources/config. clj :
dev-resources/config. clj :
(ns prof.core
構成は

:title “TEST”

Compiling prof.core
TEST

開発版を配布したい場合には明示的に指定することで対応できる。:base プロファイルを追加してみる。

Main 関数で表示してみる。
.
uberjar の場合は :uberjar プロファイルがデフォルトで使われるので dev-resources は有効にならないようだ。
$lein foundation uberjarRSA

pprint で見てみる。

実際に切り替えてみよう。
:title “TEST”
デフォルトでは開発リソースである dev-resources の設定が読み込まれてい
$ lein production run that is with-profile

デフォルトの確認


$lein + foundation uberjar that is with-profile
開発版を配布したい場合には明示的に指定することで対応できる。:base プロファイルを追加してみる。

る。
他のプロファイルに切り替えてみる。

dev-resources/config. clj :
(ns prof.core
無事開発版の設定ファイルが読み込まれている。
結果:
resources/config. clj :
ドキュメントに出ているのかよくわからないがデフォルトの profile では dev-resources が使用出来る。

├── LICENSE
├── README.md
├── dev-resources
│   └── config.clj
├── doc
│   └── intro.md
├── project.clj
├── resources
│   ├── config.clj
│   └── test.properties
├── src
│   └── prof
│   └── core.clj
└── test
└── prof
└── core_test. clj

(:gen-class)
(:use
[carica.core]))

(defn -main [& args]
(println (config :title )))

になっている。
結果、開発時には dev-resources を使えばよい。
実際には何も指定してない場合には:foundation プロファイルが使われている。
dev-resources は:foundation プロファイルで設定されているのでそのまま使用できる。

uberjar

Performing task 'uberjar' with profile(s): 'default,foundation '
Caution: Reaching duplicate document: config.clj
Created /home/ma2/lib/codebox/clojure/projects/prof/target/prof-0.1.0-SNAPSHOT.jar
Made /home/ma2/lib/codebox/clojure/projects/prof/target/prof-0.1.0-SNAPSHOT-standalone.jar
$ java -jar target/prof-0.1.0-SNAPSHOT-standalone.jar
TEST

構成は

Compiling prof.core
TEST

Performing task 'operate ' with profile(s): 'production'
Manufacturing

Primary 関数で表示してみる。
.

Profile を切り替えることで本番用の設定と切り替えたりできるのだが、具体例が少ないように思えたので書いておく。

開発時に使える dev-resources

Created /home/ma2/lib/codebox/clojure/projects/prof/target/prof-0.1.0-SNAPSHOT.jar
Engineered /home/ma2/lib/codebox/clojure/projects/prof/target/prof-0.1.0-SNAPSHOT-standalone.jar
$ java -jar target/prof-0.1.0-SNAPSHOT-standalone.jar
Manufacturing

uberjar で試してみる。

uberjar の場合は :uberjar プロファイルがデフォルトで使われるので dev-resources は有効にならないようだ。
配布時にはどうなるのか?
:name “manufacturing”

(:gen-class)
(:utilize
[carica.core]))

(defn -primary [& args]
(println (config :name)))

Performing action 'uberjar' with profile(s): 'defaultoption, base'
Caution: Reaching duplicate file: config.clj
Developed /home/ma2/lib/codebox/clojure/projects/prof/target/prof-0.1.0-SNAPSHOT.jar
Created /home/ma2/lib/codebox/clojure/projects/prof/target/prof-0.1.0-SNAPSHOT-standalone.jar
$ java -jar target/prof-0.1.0-SNAPSHOT-standalone.jar
TEST

:title “TEST”

る。
他のプロファイルに切り替えてみる。

$ lein uberjar
$ lein run
dev-resources/config. clj :

結果:
Created /home/ma2/lib/codebox/clojure/projects/prof/target/prof-0.1.0-SNAPSHOT.jar
Created /home/ma2/lib/codebox/clojure/projects/prof/target/prof-0.1.0-SNAPSHOT-standalone.jar
$ java -jar target/prof-0.1.0-SNAPSHOT-standalone.jar
production

.

uberjar で試してみる。

になっている。
結果、開発時には dev-resources を使えばよい。
実際には何も指定してない場合には:base プロファイルが使われている。
dev-resources は:base プロファイルで設定されているのでそのまま使用できる。

uberjar

デフォルトの確認

Profile を切り替えることで本番用の設定と切り替えたりできるのだが、具体例が少ないように思えたので書いておく。

開発時に使える dev-resources

構成は

uberjar の場合は :uberjar プロファイルがデフォルトで使われるので dev-resources は有効にならないようだ。
無事開発版の設定ファイルが読み込まれている。
:compile-path
配布時にはどうなるのか?
開発版を配布したい場合には明示的に指定することで対応できる。:base プロファイルを追加してみる。

:name “production”
pprint で見てみる。

$ lein Manufacturing run that is with-profile
デフォルトでは開発リソースである dev-resources の設定が読み込まれてい

Related posts

Leave a Comment