2013-02-06 36 views
10

Tôi đang sử dụng playframework 2.1-RC2. Trước hết, tôi đã thấy all thesimilarquestions, vì vậy tôi đã làm theo hướng dẫn chung về cách tách tệp application.conf cho mỗi môi trường. Vì vậy, tôi đã application.test.conf và tôi chạy thử nghiệm theo cách này:Cài đặt Playframework tùy thuộc vào môi trường

play -Dconfig.file=./conf/application.test.conf "test" 

Tôi đã cố gắng kết hợp khác nhau, như

play -Dconfig.file=./conf/application.test.conf ~test 

hoặc

play -Dconfig.file=conf/application.test.conf ~test 

Vẫn không có may mắn, nó chỉ làm không được chọn, mặc định một (application.conf) là thay thế.

Từ phía bên kia, nếu tôi làm

play -Dconfig.file=./conf/application.dev.conf "run" 

sau đó ứng dụng chọn cấu hình đúng.

Vậy làm cách nào tôi có thể chỉ định tệp cấu hình thử nghiệm?

Trả lời

13

tôi thấy cách mạnh mẽ nhất để thể chỉ định điều này trong một nền tảng tương thích cách là đưa nó trực tiếp trong Build.scala:

val main = play.Project(appName, appVersion, appDependencies).settings(
    javaOptions in Test += "-Dconfig.file=conf/test.conf", 
    ... 
) 

Bonus: cấu hình một lần và quên ;-)

+0

người đàn ông bạn đã làm cho ngày của tôi. Nhưng làm thế nào nó làm điều tương tự thông qua giao diện điều khiển không hoạt động? .. – zapadlo

+0

Tôi không biết bạn đang chạy hệ điều hành nào nhưng ít nhất trong Windows có lỗi ưu tiên đã biết, nhưng mức độ ưu tiên thấp sẽ không truyền tham số đến JVM đúng (và đây là tham số JVM, không phải tham số phát). SBT làm tốt hơn ;-) – Leo

+2

Đây là một cách tiếp cận thú vị, nhưng từ khóa "Test" đến từ đâu? Có thể làm điều tương tự với môi trường như dev/preprod/prod ...? Cảm ơn – c4k

1

Cách tiếp cận khác là ghi đè phương pháp trên GlobalSettings/Global có tên là onLoadConfig và cho phép bạn có quyền kiểm soát nơi ứng dụng của bạn sẽ tìm cấu hình của bạn.

Vì vậy, trong một trong các ứng dụng của chúng tôi, tôi có cài đặt này bên dưới cho thư mục/conf của tôi.

conf/application.conf --> configurations common for all environment 
conf/dev/application.conf --> configurations for development environment 
conf/test/application.conf --> configurations for testing environment 
conf/prod/application.conf --> configurations for production environment 

Với điều đó, bạn có thể triển khai kế thừa như thiết lập cấu hình, bạn có chung và 3 người khác cho chế độ môi trường cụ thể.

Các mã bên trong phương pháp onLoadConfig bạn chỉ nên tải cấu hình chính và thiết lập cấu hình đúng dự phòng cụ thể đối với môi trường của bạn sau đó trả lại ví dụ cấu hình như dưới đây:

**return new Configuration(baseConfig.withFallback(envConfig));** 

Cố gắng kiểm tra blog post for complete snippet này của mã này.

Tôi hy vọng điều này sẽ hữu ích.