maven多环境自动切换配置 maven profile多环境自动切换配置,配置分离,排除文件

maven profile多环境自动切换配置,配置分离,排除文件

 

痛点:

  在java开发的过程中,我们经常要面对各种各样的环境,比如开发环境,测试环境,正式环境,而这些环境对项目的需求也不相同。

  在此之前,我们往往需要手动去修改相对应的配置文件然后打成war,才能部署到相应的环境上。

  但是这样很容易出现问题,因为很容易出现少改或者漏改,造成不必要的麻烦

幻想:

  要是有一种东西,能让我们打war的时候指定一个参数,就能自动把项目编译成对应环境的war,那该有多幸福啊!!!

结果:这样的东西还真有,那就是maven-profile

一、项目src/main/resources目录下建立相对应的目录

 我建立了三个目录,分别是:dev,test,pro分别表示开发环境,测试环境,生产环境。当然还可能有更多的环境。针对不同的环境,我们的配置文件可能会有不同的设置,比如我的需求是,三个环境的项目常量设置,数据库连接设置,log设置都可能不同。

那我就分别在三个文件中配置了不同设置,在外面也有三个相对应的文件,其实在开发的过程中外面的三个和dev里面的三个应该是相同的。

公共配置直接放到src/main/resources下

二、POM中的配置

复制代码
 1  <profiles>
 2         <!--本地开发环境-->
 3         <profile>
 4             <id>dev</id>
 5             <properties>
 6                 <profiles.active>dev</profiles.active>
 7             </properties>
 8             <activation>
 9                 <activeByDefault>true</activeByDefault>
10             </activation>
11         </profile>
12         <!--测试环境-->
13         <profile>
14             <id>test</id>
15             <properties>
16                 <profiles.active>test</profiles.active>
17             </properties>
18         </profile>
19         <!--生产环境-->
20         <profile>
21             <id>pro</id>
22             <properties>
23                 <profiles.active>pro</profiles.active>
24             </properties>
25         </profile>
26     </profiles>
27 
28 <!--build部分-->
29     <build>
30         <finalName>xxx</finalName>
31         <sourceDirectory>src/main/java</sourceDirectory>
32         <testSourceDirectory>src/test/java</testSourceDirectory>
33         <resources>
34             <resource>
<!--项目的默认资源目录,但是要排除不必要的文件,想要指定加入的再下面的resource指定-->
35                 <directory>${project.basedir}/src/main/resources</directory>
36                 <excludes>
38                     <exclude>dev/*</exclude>
40                     <exclude>pro/*</exclude>
41                     <exclude>test/*</exclude>
43                 </excludes>
44             </resource>
49             <resource>
50                 <directory>${project.basedir}/src/main/resources/${profiles.active}</directory>
51                 <includes>
52                     <include>**/*.xml</include>
53                 </includes>
54                 <!--是否替换资源中的属性-->
55                 <filtering>true</filtering>
56             </resource>
57         </resources>
58 ...
59 </build>
复制代码
 
 
  maven 打包时制定参数就好 -P test等
 
 
 
   

痛点:

  在java开发的过程中,我们经常要面对各种各样的环境,比如开发环境,测试环境,正式环境,而这些环境对项目的需求也不相同。

  在此之前,我们往往需要手动去修改相对应的配置文件然后打成war,才能部署到相应的环境上。

  但是这样很容易出现问题,因为很容易出现少改或者漏改,造成不必要的麻烦

幻想:

  要是有一种东西,能让我们打war的时候指定一个参数,就能自动把项目编译成对应环境的war,那该有多幸福啊!!!

结果:这样的东西还真有,那就是maven-profile

一、项目src/main/resources目录下建立相对应的目录

 我建立了三个目录,分别是:dev,test,pro分别表示开发环境,测试环境,生产环境。当然还可能有更多的环境。针对不同的环境,我们的配置文件可能会有不同的设置,比如我的需求是,三个环境的项目常量设置,数据库连接设置,log设置都可能不同。

那我就分别在三个文件中配置了不同设置,在外面也有三个相对应的文件,其实在开发的过程中外面的三个和dev里面的三个应该是相同的。

公共配置直接放到src/main/resources下

二、POM中的配置

复制代码
 1  <profiles>
 2         <!--本地开发环境-->
 3         <profile>
 4             <id>dev</id>
 5             <properties>
 6                 <profiles.active>dev</profiles.active>
 7             </properties>
 8             <activation>
 9                 <activeByDefault>true</activeByDefault>
10             </activation>
11         </profile>
12         <!--测试环境-->
13         <profile>
14             <id>test</id>
15             <properties>
16                 <profiles.active>test</profiles.active>
17             </properties>
18         </profile>
19         <!--生产环境-->
20         <profile>
21             <id>pro</id>
22             <properties>
23                 <profiles.active>pro</profiles.active>
24             </properties>
25         </profile>
26     </profiles>
27 
28 <!--build部分-->
29     <build>
30         <finalName>xxx</finalName>
31         <sourceDirectory>src/main/java</sourceDirectory>
32         <testSourceDirectory>src/test/java</testSourceDirectory>
33         <resources>
34             <resource>
<!--项目的默认资源目录,但是要排除不必要的文件,想要指定加入的再下面的resource指定-->
35                 <directory>${project.basedir}/src/main/resources</directory>
36                 <excludes>
38                     <exclude>dev/*</exclude>
40                     <exclude>pro/*</exclude>
41                     <exclude>test/*</exclude>
43                 </excludes>
44             </resource>
49             <resource>
50                 <directory>${project.basedir}/src/main/resources/${profiles.active}</directory>
51                 <includes>
52                     <include>**/*.xml</include>
53                 </includes>
54                 <!--是否替换资源中的属性-->
55                 <filtering>true</filtering>
56             </resource>
57         </resources>
58 ...
59 </build>
复制代码
 
 
  maven 打包时制定参数就好 -P test等
 
 
 
   

猜你喜欢

转载自www.cnblogs.com/xiaohan666/p/9373410.html