要加载环境特定的值,在我的 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 是环境变量。
我正在使用 appassembler-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 不加载属性;可能是由于 spring 配置中的给定路径(见上文)。
我应该使用什么 Maven 配置在打包期间将我的属性文件移动到 appassembler\conf 文件夹中,并从类路径中加载它们。我追求适用于开发(在eclipse中,作为maven构建的单元测试)和部署的配置。