2016-09-28 43 views
19

Tôi có 5 môi trường:Làm cách nào để kích hoạt cấu hình Spring Boot khi chạy từ IntelliJ?

- local (my development machine) 
- dev 
- qc 
- uat 
- live 
- staging 

Tôi muốn tính ứng dụng khác nhau được sử dụng cho từng môi trường, vì vậy tôi có các thuộc tính sau tập tin mỗi trong đó có một URL khác nhau cho các nguồn dữ liệu:

- application.properties (containing common properties) 
- application-local.properties 
- application-dev.properties 
- application-qc.properties 
- application-uat.properties 
- application-live.properties 

Tôi đang sử dụng IntelliJ và chạy ứng dụng của tôi bằng cách sử dụng bootRun trong plugin Gradle trên máy cục bộ của tôi. Tôi sẽ sử dụng triển khai cùng một tập tin chiến tranh ứng dụng trên tất cả các môi trường khác chạy Tomcat.

Tôi đã thử thêm:

--spring.profiles.active = địa phương

để cấu hình chạy theo các thông số kịch bản.

Tôi đã thử thêm

-Dspring.profiles.active = địa phương

để cấu hình chạy dưới tùy chọn VM.

Không hoạt động. Tôi tiếp tục nhìn thấy thông điệp INFO khi khởi động nói: Không thiết lập cấu hình hoạt động, rơi trở lại cấu hình mặc định: mặc định

Nếu tôi chạy ứng dụng của tôi từ cửa sổ dòng lệnh sử dụng

gradle bootRun 

nhưng trước tiên tôi đặt biến môi trường

set SPRING_PROFILES_ACTIVE=local 

Sau đó, mọi thứ hoạt động.

Vì vậy, câu hỏi của tôi là, làm cách nào để kích hoạt hồ sơ khởi động mùa xuân cục bộ khi chạy bootRun từ IntelliJ?

+0

Tại sao bạn chạy ứng dụng qua gradle ở đó? Nó sẽ không thuận lợi hơn 10 lần để sử dụng cấu hình chạy? Có một trường mà bạn có thể đặt cấu hình để bật ... –

+0

Tôi đang sử dụng cấu hình chạy trong IntelliJ, như đã giải thích ở trên. Nó không hoạt động. – dleerob

+0

Không, bạn không. Những gì tôi đang nói về là "Spring Boot run configuration" Run -> Edit configuration> New> Spring Boot. –

Trả lời

2

tôi đã kết thúc thêm dòng sau vào build.gradle tôi:

bootRun { 
    environment SPRING_PROFILES_ACTIVE: environment.SPRING_PROFILES_ACTIVE ?: "local" 
} 

test { 
    environment SPRING_PROFILES_ACTIVE: environment.SPRING_PROFILES_ACTIVE ?: "test" 
} 

Vì vậy, bây giờ khi chạy bootRun từ IntelliJ, nó mặc định là hồ sơ cá nhân "địa phương".

Trên các môi trường khác của chúng tôi, chúng tôi sẽ chỉ cần đặt biến môi trường 'SPRING_PROFILES_ACTIVE' trong Tomcat.

Tôi nhận này từ một lời nhận xét tìm thấy ở đây: https://github.com/spring-projects/spring-boot/pull/592

0

Đặt -Dspring.profiles.active = local trong đối số chương trình, KHÔNG CÓ dấu ngoặc kép.

+0

Tôi đã xóa các trích dẫn khỏi câu hỏi của mình ở trên. Tôi không thực sự sử dụng dấu ngoặc kép, tôi đã chỉ cố gắng để hiển thị chính xác những gì tôi đã đưa vào các lĩnh vực cấu hình chạy – dleerob

+0

bạn có nghĩa là tùy chọn VM! –

3

Một nguyên nhân có thể xảy ra có thể là bạn không vượt qua các tham số dòng lệnh vào ứng dụng phương pháp chính. Tôi đã phạm sai lầm tương tự vài tuần trước.

public static final void main(String... args) { 
    SpringApplication.run(Application.class, args); 
} 
+0

Cảm ơn bạn đã trả lời và đề xuất, tuy nhiên tôi đang chuyển các đối số. – dleerob

+0

Đã giải quyết xong lỗi này. – jbarrameda

+0

Điều này thực sự đã khắc phục được sự cố của tôi. Đối với một số lý do khi tôi tạo dự án bằng Gradle, nó không tự động tạo lớp 'Application' của tôi do đó đã làm nó bằng tay từ bộ nhớ. Bỏ qua bước 'args', và vì vậy hộp" Active Profiles "trong cấu hình chạy không hoạt động - tôi đã phải tự chuyển qua' -Dspring.profiles.active' trong hộp tùy chọn VM. –

31

Nếu bạn thực sự sử dụng cấu hình khởi động mùa xuân (hiện chỉ được hỗ trợ trong Ultimate Edition), bạn có thể dễ dàng định cấu hình cấu hình trong cài đặt "Cấu hình hoạt động".

enter image description here

+0

Cảm ơn, tôi chắc chắn điều này sẽ làm việc, tuy nhiên tôi không sử dụng cấu hình chạy Spring Boot, tôi đang sử dụng cấu hình chạy Gradle không có trường "Cấu hình hoạt động". Gradle của tôi xây dựng các bộ lọc và sửa đổi một số tệp thuộc tính mà nó sao chép vào thư mục xây dựng, vì vậy tôi đang sử dụng cấu hình chạy Lớp cho việc này. – dleerob

+0

bạn được chào đón. Hy vọng bạn giải quyết vấn đề sau đó –

+0

Như một câu trả lời ở trên đã chỉ ra: nếu điều này không làm việc cho bạn, hãy đảm bảo rằng bạn đang chuyển vào 'args' trong' Application.main() 'của bạn, ví dụ' SpringApplication.run (Application) .class, args); ' –

25

tôi đã đi vào Chỉnh sửa Configurations ...

tôi thêm -Dspring.profiles.active = test để VM Options và sau đó lại chạy cấu hình đó. Nó hoạt động hoàn hảo.

enter image description here

0

Hãy thử điều này. Chỉnh sửa tệp build.gradle của bạn như sau.

ext { profile = project.hasProperty('profile') ? project['profile'] : 'local' } 
Các vấn đề liên quan