環境固有の値をロードするために、src/main/resources フォルダーのさまざまなサブフォルダーにいくつかのプロパティ ファイルがあります。
- com/app/ws/webservices-dev.properties
- com/app/ws/webservices-test.properties
- com/app/jms/jms-dev.properties
- com/app/jms/jms-test.properties
私は春を通してこれらのプロパティをロードしています
<bean id="placeholderProperties" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="locations">
<list>
<value>classpath:/com/app/jms/jms-${ENVIRONMENT:dev}.properties</value>
<value>classpath:/com/app/ws/webservices-${ENVIRONMENT:dev}.properties</value>
</list>
</property>
<property name="systemPropertiesModeName" value="SYSTEM_PROPERTIES_MODE_OVERRIDE" />
<property name="ignoreResourceNotFound" value="true" />
<property name="ignoreUnresolvablePlaceholders" value="true" />
<property name="order" value="0" />
</bean>
ENVIRONMENT は環境変数です。
appassemblyr-maven-plugin を使用して、実行可能な .sh ファイルを生成しています。
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>appassembler-maven-plugin</artifactId>
<version>1.2.2</version>
<configuration>
<binFileExtensions>
<unix>.sh</unix>
</binFileExtensions>
<programs>
<program>
<mainClass>com.app.MainApp</mainClass>
<name>MainApp</name>
</program>
</programs>
</configuration>
</plugin>
この結果、すべてのプロパティ ファイルが、生成された jar ファイルの一部になります。いくつかのプロパティを公開して、展開時に値を設定したいと考えています。次の構成を試しました
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>appassembler-maven-plugin</artifactId>
<version>1.2.2</version>
<configuration>
<configurationSourceDirectory>src/main/resources/com/app/bootstrap</configurationSourceDirectory>
<configurationDirectory>conf</configurationDirectory>
<copyConfigurationDirectory>true</copyConfigurationDirectory>
<includeConfigurationDirectoryInClasspath>true</includeConfigurationDirectoryInClasspath>
<binFileExtensions>
<unix>.sh</unix>
</binFileExtensions>
<programs>
<program>
<mainClass>com.app.MainApp</mainClass>
<name>MainApp</name>
</program>
</programs>
</configuration>
</plugin>
ただし、Spring はプロパティをロードしません。おそらく、春の設定で指定されたパスが原因です(上記を参照)。
パッケージ時に appassemblyr\conf フォルダーにプロパティ ファイルを移動し、クラスパスからそれらをスプリング ロードするために使用する Maven 構成を教えてください。私は、開発 (Eclipse では、maven ビルドとしての単体テスト) と展開の両方で機能する構成を求めています。