Oferujemy różne właściwości obecnie, ale nie za pomocą różnych folderów. Robimy to poprzez mieszanką
PropertyPlaceholderConfigurer
- profili Mavena sprężyny (coś używamy do budowy naszego środowiska Dev),
- Budowa Server (TeamCity w naszym przypadku)
- fazy Maven produkować prawidłowa artefakt
- uruchomienie i budować argumenty
Moje zrozumienie tego, co możemy zrobić, to l naśladować, ale mam nadzieję, że jest to użyteczny przykład dla innych i być może ja sam rozważam.
Dostarczamy parametry, jak widać poniżej, wskazujące różne pliki właściwości. Każdy plik właściwości ma konfigurację dla regionu/środowiska. Wyjaśnię bieżące użycie najlepiej jak potrafię, w przypadku, gdy zapewni inne korzyści.
Aby korzystać z profili Maven, utworzyliśmy profile
w naszym pom zidentyfikowanym jako development
, który zawiera właściwość konfiguracji regionu o nazwie env
. Nie wiem jeszcze do końca, jak to jest jeszcze używane w naszym projekcie, ale poniżej zobaczysz nasz POM z wtyczką Maven Compiler i wtyczką Maven Tomcat.
Z dnia na dzień, jako programiści uruchamiamy nasze nasze aplikacje lokalnie na serwerze Tomcat z poziomu IntelliJ i dostarczamy właściwość env
. Przy uruchamianiu właściwość env
jest dostarczana jako argument dla ustawionej na classpath*:dev-common.properties
. Ten plik jest plikiem konfiguracyjnym właściwości - ustawiającym wartości zastępcze dla różnych regionów .
Wartość env
udostępnienie naszym PropertyPlaceholderConfigurer
Przykład 1 - Wykonanie Mavenie profile
w pom.xml:
Wdrożenie profile
w naszym POM:
<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>
Przykład 2 - Obiekt zastępczy konfiguratora dla normalnej produkcji:
Wykonujemy również stosowanie ofa Wiosna składnik, a PropertyPlaceholderConfigurer
. Używamy tego we współpracy z argumentem budowania, aby ustawić ścieżkę klasy Clashspath do plików zasobów w postaci.
<bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="locations">
<list>
<value>
${env}
</value>
</list>
</property>
Przykład 3 - Obiekt zastępczy konfiguratora dla testu:
Mamy Wiosna Konteksty specjalnie skonfigurowane do testowania integracyjnego, który również użyć PropertyPlaceholderConfigurer
. Są one pobierane przez testową klasę integracji przy użyciu kombinacji @ContextConfiguration(locations = {"classpath:test-dataexchange-application-context.xml"})
i @RunWith(SpringJUnit4ClassRunner.class)
).
W kontekście testowania możemy skonfigurować PropertyPlaceholderConfigurer
następująco odebrać właściwości obszaru testowania Integracja:
<bean id="testpropertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="locations">
<list>
<value>classpath*:dev-local-common.properties</value>
</list>
</property>
Inne uwagi:
Mamy wykorzystaj Team City do zarządzania budową, ale nie widziałem, jak te ustawienia to użyte tam, jeśli w ogóle są. Mogę sobie wyobrazić, że istnieje możliwość połączenia powyższych podejść w celu wsparcia ciągłej integracji i dostawy.
Nie widzę, gdzie jest używany profil oznaczony jako development
.To jest coś, co muszę wykonać za pośrednictwem moich kolegów członków zespołu.
Zasoby:
profili użycie Maven (http://maven.apache.org/guides/introduction/introduction-to-profiles.html) oraz filtrowanie zasobów (http: // Maven. apache.org/plugins/maven-resources-plugin/examples/filter.html) – willome