maven 多环境配置属性文件

在开发过程中,我们的软件会面对不同的运行环境,比如开发环境、测试环境、生产环境,而我们的软件在不同的环境中,有的配置可能会不一样,比如数据库配置文件、属性文件等等。
     使用maven来实现多环境的构建可移植性,需要借助maven提供的profile功能,通过不同的环境激活不同的profile来达到构建的可移植性。

    思路:对于我当前的系统来说,是借助 maven-resources-plugin 此插件   将源代码和资源文件复制到一个current目录中去的,那么对于不同环境中需要的数据库配置文件  属性文件 等properties文件来说  , 我们可以在共公有模块中 , 在src\main目录下建立env\dev  ,env\pro ,den\test  等三个环境下的配置文件目录,里面存放各自环境下的配置文件   然后在parent模块中  通过配置profiles来指定构建时复制上述三个目录下的哪个目录到current中去。


1. 首先在parent模块的pom文件中配置profiles

上面是通过profile指定了属性env的值 通过 <activeByDefault 默认dev环境


2.使用maven-resource-plugin将指定目录复制到current目录中去


                  
<plugin>
   <artifactId>maven-resources-plugin</artifactId>
   <version>3.0.1</version>
   <executions>
      <execution>
         <id>copy-resources</id>
         <phase>package</phase>
         <goals>
            <goal>copy-resources</goal>
         </goals>
         <configuration>
            <outputDirectory>${app.dir}</outputDirectory>
            <resources>
               <resource>
                  <directory>./webapp/</directory>
                  <filtering>false</filtering>
               </resource>
            </resources>
         </configuration>
      </execution>
      <!-- 把指定目录放到target/classes-->
      <execution>
         <id>copy-conf</id>
         <phase>package</phase>
         <goals>
            <goal>copy-resources</goal>
         </goals>
         <configuration>
            <outputDirectory>./target/classes</outputDirectory>
            <resources>
               <resource>
                  <directory>./src/main/resources</directory>
                  <filtering>false</filtering>
               </resource>
                             <resource>
                                 <directory>./src/main/env/${env}</directory>
                                 <filtering>false</filtering>
                             </resource>
            </resources>
         </configuration>
      </execution>
      <!-- 把每个工程的目录复制到 target/classes-->
      <execution>
         <id>copy-classes-conf</id>
         <phase>package</phase>
         <goals>
            <goal>copy-resources</goal>
         </goals>
         <configuration>
            <outputDirectory>${app.dir}/WEB-INF/classes</outputDirectory>
            <resources>
               <resource>
                  <directory>./target/classes</directory>
                  <filtering>false</filtering>
               </resource>
            </resources>
         </configuration>
      </execution>
   </executions>
</plugin>

这样构建时通过 pfofile指定了属性env的值  在maven-resource-plugin插件工作时,读取env的值 ,这样就可以复制不同环境下的文件到current中了。


3.这样配置完之后   如果你使用的是idea进行开发的话  进入命令行模式  进入聚合模块   之后执行 mvn install -Dmaven.test.skip=true -Pdev   就可以了
  -P 后面的就是你定义的profile的id

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值