环境隔离
maven环境隔离就是不同环境进行不同的配置,打包的时候,调用对应的配置
为什么
在项目开发中,开发、测试、生产环境的配置都不一样,如果每次都手动改变配置,容易改错,这时我们可以使用Maven
spring MVC
旧项目结构
以下文件是不同环境单独配置的:
datasource.properties 数据库配置文件
logback.xml logback配置文件
mmall.properties ftp服务器配置
zfbinfo.properties 支付宝支付功能配置
步骤
一、创建不同的配置文件
二、修改pom.xml文件
<resources>
<resource>
<directory>src/main/resources.${deploy.type}</directory>
<excludes>
<exclude>*.jsp</exclude>
</excludes>
</resource>
<resource>
<directory>src/main/resources</directory>
</resource>
</resources>
包裹在build中
这里的directory中配置了隔离文件的路径,${deploy.type}指的是将要隔离出来的文件的名称,将会在profiles结点中配置
<profiles>
<profile>
<id>dev</id>
<activation>
<activeByDefault>true</activeByDefault>
</activation>
<properties>
<deploy.type>dev</deploy.type>
</properties>
</profile>
<profile>
<id>beta</id>
<properties>
<deploy.type>beta</deploy.type>
</properties>
</profile>
<profile>
<id>prod</id>
<properties>
<deploy.type>prod</deploy.type>
</properties>
</profile>
</profiles>
和build同级
配置了activeByDefault结点为true,表示当不选择编译环境时,默认使用dev(开发)环境,这也是推荐的配置。上述提到的deploy.type将会直接从这里的deploy.type中拿值,来表示是哪个编译环境。
三、打包
(一)、使用maven命令打包
mvn clean package -Dmaven.test.skip=true -Pdev
-Pdev 表示dev环境
-Pbeta 表示beta环境
-Pprod 表示prod环境
-Dmaven.test.skip=true 表示不执行测试用例,也不编译测试用例类
备注
Unknown lifecycle phase “.test.skip=true“. You must specify a valid lifecycl
解决办法:
只需要加在此参数外加单引号即可,即:mvn package '-Dmaven.test.skip=true'。
或
切换idea的终端为Command Prompt
原因:
idea默认的终端是Windows PowerShell,在 PowerShell 下,参数 -Dmaven.test.skip=true 没有被正确地识别。
(二)、使用idea打包
1、右侧maven选择要打包部署的配置,一般是选择的dev
2、在idea中,配置tomcat
3、点击启动按钮
4、执行完后,打开tomcat目录中的webapps文件夹,里面就有打包好的项目
spring-boot
新建dev和prod文件,存放开发环境和生产环境的配置
application-dev.yml
server:
port: 8081
spring:
datasource:
url: jdbc:mysql://localhost:3306/foodie-shop-dev?characterEncoding=UTF-8&serverTimezone=GMT%2B8
username: root
password: x5219438
application.yml 通过active来切换当前环境的配置
#环境配置 dev就是新建的application-dev.yml
spring:
profiles:
active: dev