Chúng tôi cung cấp các thuộc tính khác nhau hiện tại nhưng không phải bằng các thư mục khác nhau. Chúng tôi làm điều này qua một kết hợp của
PropertyPlaceholderConfigurer
- Maven hồ sơ Spring (một cái gì đó chúng tôi sử dụng để xây dựng môi trường Dev của chúng tôi),
- Build Server (TeamCity trong trường hợp của chúng tôi)
- giai đoạn Maven để sản xuất tạo tác chính xác
- khởi động và xây dựng đối số
Hiểu biết của tôi về những gì chúng tôi làm là l imited, nhưng hy vọng điều này phục vụ như là một ví dụ hữu ích cho người khác và có lẽ bản thân tôi để xem xét.
Chúng tôi cung cấp các thông số, như bạn sẽ thấy bên dưới, để trỏ đến các tệp thuộc tính khác nhau. Mỗi tệp thuộc tính có cấu hình cho một vùng/môi trường. Tôi sẽ giải thích việc sử dụng hiện tại là tốt nhất tôi có thể trong trường hợp nó cung cấp một số sử dụng cho người khác.
Để sử dụng các cấu Maven chúng tôi đã tạo ra một profile
trong pom của chúng tôi xác định là development
trong đó bao gồm một tài sản cấu hình khu vực được gọi là env
. Tôi chưa biết hoàn toàn cách mà nó đang được sử dụng trong dự án của chúng tôi tuy nhiên bạn sẽ thấy bên dưới POM của chúng tôi bao gồm một trình biên dịch Maven Compiler và một plugin Maven Tomcat.
Hàng ngày, với tư cách là nhà phát triển, chúng tôi chạy các ứng dụng của chúng tôi cục bộ trên Tomcat từ bên trong IntelliJ và cung cấp thuộc tính env
. Khi khởi động, thuộc tính env
được cung cấp làm đối số cho được đặt thành classpath*:dev-common.properties
. Tệp này là tệp cấu hình thuộc tính - đặt giá trị giữ chỗ cho các khu vực khác nhau của chúng tôi.
Giá trị của env
được tạo sẵn cho chúng tôi PropertyPlaceholderConfigurer
Ví dụ 1 - Thực hiện các Maven profile
trong pom.xml:
Việc thực hiện một profile
trong pom của chúng tôi là:
<profile>
<id>development</id>
<activation>
<property>
<name>env</name>
<value>development</value>
</property>
</activation>
<build>
<pluginManagement>
<plugins>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<version>2.3.2</version>
<configuration>
<source>1.6</source>
<target>1.6</target>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.tomcat.maven</groupId>
<artifactId>tomcat7-maven-plugin</artifactId>
<version>2.0-SNAPSHOT</version>
...
</plugin>
</plugins>
</pluginManagement>
</build>
</profile>
Ví dụ 2 - Sở hữu placeholder configurer cho xây dựng thông thường:
Chúng tôi cũng làm cho thành phần mùa xuân sử dụng ofa, một PropertyPlaceholderConfigurer
. Chúng tôi sử dụng tính năng này phối hợp với đối số xây dựng để thiết lập đường dẫn lớp học con trỏ vào tệp tài nguyên.
<bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="locations">
<list>
<value>
${env}
</value>
</list>
</property>
Ví dụ 3 - giữ chỗ tài sản configurer cho thử nghiệm:
Chúng tôi có mùa xuân bối cảnh đặc biệt được thành lập để thử nghiệm hội nhập mà còn sử dụng PropertyPlaceholderConfigurer
. Chúng được chọn bởi một lớp thử nghiệm tích hợp sử dụng kết hợp của @ContextConfiguration(locations = {"classpath:test-dataexchange-application-context.xml"})
và @RunWith(SpringJUnit4ClassRunner.class)
).
Trong bối cảnh thử nghiệm chúng ta cấu hình PropertyPlaceholderConfigurer
như sau để nhận các tính chất của một khu vực thử nghiệm tích hợp:
<bean id="testpropertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="locations">
<list>
<value>classpath*:dev-local-common.properties</value>
</list>
</property>
ghi chú khác:
Chúng tôi sử dụng Team City để quản lý xây dựng nhưng tôi chưa thấy các cài đặt này lànhư thế nàođược sử dụng ở đó, nếu chúng ở tất cả. Tôi có thể hình dung có khả năng kết hợp các phương pháp trên với nhau để hỗ trợ tích hợp liên tục và giao hàng.
Tôi không thấy vị trí hồ sơ được xác định là development
đang được sử dụng.Đó là điều tôi phải theo dõi các thành viên trong nhóm của tôi.
Resources:
sử dụng tiểu sử maven (http://maven.apache.org/guides/introduction/introduction-to-profiles.html) và lọc tài nguyên (http: // maven. apache.org/plugins/maven-resources-plugin/examples/filter.html) – willome