【发布时间】:2013-09-05 12:57:11
【问题描述】:
由于正在使用 Spring 和 maven 开发一个大项目。但是会有不同的环境需要部署,例如开发、测试、登台和生产。
该项目针对不同的环境有很多不同的属性。
有什么优雅的方法可以解决这种事情,所以我可以把它作为模板,在其他项目中重复使用。
我猜会使用诸如配置文件、占位符等弹簧特性。
有什么好的教程或博客让我获得更好的解决方案吗?
【问题讨论】:
标签: java spring maven spring-profiles
由于正在使用 Spring 和 maven 开发一个大项目。但是会有不同的环境需要部署,例如开发、测试、登台和生产。
该项目针对不同的环境有很多不同的属性。
有什么优雅的方法可以解决这种事情,所以我可以把它作为模板,在其他项目中重复使用。
我猜会使用诸如配置文件、占位符等弹簧特性。
有什么好的教程或博客让我获得更好的解决方案吗?
【问题讨论】:
标签: java spring maven spring-profiles
Maven 概念配置文件可以成为您的朋友:
<profile>
<id>DEV</id>
<build>
<resources>
<resource>
<directory>src/test/dev-resources</directory>
</resource>
<resource>
<directory>src/main/dev-resources</directory>
</resource>
</resources>
</build>
</profile>
<profile>
<id>STAGING</id>
<build>
<resources>
<resource>
<directory>src/test/staging-resources</directory>
</resource>
<resource>
<directory>src/main/staging-resources</directory>
</resource>
</resources>
</build>
</profile>
并使用“-P DEV”来运行您的所有 Maven 构建,例如用于开发建议和“-P STAGING”用于暂存建议。
【讨论】:
您可以使用属性配置器。像这样的:
<bean id="propertyConfigurer"
class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="ignoreResourceNotFound" value="true"/>
<property name="locations">
<list>
<value>file:${catalina.home}/conf/your_props.properties</value>
</list>
</property>
</bean>
您可以将您的属性(在这种情况下使用Tomcat servlet 容器)放在每个不同环境中的某个配置目录下。
在这种情况下,属性存储在${catalina.home}/conf 下,其中catalina.home 指的是Tomcat 的安装目录。
【讨论】: