不同环境下的配置文件不一样,为每个环境单独写一套配置文件不易维护,使用 Gradle 能动态的替换文件中预先定义好的占位符生成特定环境下的配置文件并打包输出。
1. src/main/resources/config/datasource.xml
1 |
|
@database.username@
, @database.password@
等是占位符,Gradle 会将其替换掉。
2. 定义不同环境下的配置 config.groovy
config.groovy
和 build.gradle
在同一个目录下,定义了不同环境下的配置信息
1 | environments { |
environments
的内容使用ConfigSlurper
读取
3. build.gradle
在 build.gradle 中定义替换的任务 processResources
1 | import org.apache.tools.ant.filters.ReplaceTokens |
Use the
ConfigSlurper
to read in properties for our project. The ConfigSlurper supports environments where we can define values for properties per environment.
4. 忽略文件
1 | processResources |
很多文件不能使用 processResources 进行处理,例如图片,字体文件或者其他二进制文件,否则文件的内容会被破坏。
5. 打包
gradle clean build
或者gradle clean -Denv=development build
生成开发环境
下的配置并打包1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd">
<!-- Data Source using DBCP. -->
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
<property name="driverClassName" value="com.mysql.jdbc.Driver" />
<property name="url" value="jdbc:mysql://localhost:3306/survey?useUnicode=true&characterEncoding=UTF-8" />
<property name="username" value="root" />
<property name="password" value="root" />
<!-- 连接池启动时的初始值 -->
<property name="initialSize" value="10" />
...
</bean>
</beans>gradle clean -Denv=production build
生成线上环境
的配置并打包1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd">
<!-- Data Source using DBCP. -->
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
<property name="driverClassName" value="com.mysql.jdbc.Driver" />
<property name="url" value="jdbc:mysql://localhost:3306/survey?useUnicode=true&characterEncoding=UTF-8" />
<property name="username" value="root" />
<property name="password" value="wxyz" />
<!-- 连接池启动时的初始值 -->
<property name="initialSize" value="10" />
...
</bean>
</beans>