前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >技术汇总:第十章:Maven Profile动态选择配置文件

技术汇总:第十章:Maven Profile动态选择配置文件

作者头像
Java廖志伟
发布2022-09-28 15:00:32
5840
发布2022-09-28 15:00:32
举报
文章被收录于专栏:高级开发进阶

Maven Profile

什么是MavenProfile

在我们平常的java开发中,会经常使用到很多配制文件(xxx.properties,xxx.xml),而当我们在本地开发(dev),测试环境测试(test),线上生产使用(product)时,需要不停的去修改这些配制文件,次数一多,相当麻烦。现在,利用maven的filter和profile功能,我们可实现在编译阶段简单的指定一个参数就能切换配制,提高效率,还不容易出错.

profile可以让我们定义一系列的配置信息,然后指定其激活条件。这样我们就可以定义多个profile,然后每个profile对应不同的激活条件和配置信息,从而达到不同环境使用不同配置信息的效果。

Maven Profile入门

修改pinyougou-page-web的pom.xml

代码语言:javascript
复制
 <properties>
      <port>9105</port>
  </properties>
  <build>  
      <plugins>	     
          <plugin>
                <groupId>org.apache.tomcat.maven</groupId>
                <artifactId>tomcat7-maven-plugin</artifactId>
                <version>2.2</version>
                <configuration>
                    <!-- 指定端口 -->
                    <port>${port}</port>
                    <!-- 请求路径 -->
                    <path>/</path>
                </configuration>
      	  </plugin>
      </plugins>  
    </build>

运行tomcat7:run ,发现运行结果是一样的,因为port是变量,而变量值是定义为9105。这其实就是我们之前学习的maven的变量。

那我们现在思考一下,如果这个端口在开发时使用9105,如果在生产环境(或其他环境)为9205呢?如何解决值的动态切换呢?

这时我们修改pom.xml,增加profile定义

代码语言:javascript
复制
  <profiles>
      <profile>
          <id>dev</id>
          <properties>
              <port>9105</port>
          </properties>
      </profile>
      <profile>
          <id>pro</id>
          <properties>
              <port>9205</port>
          </properties>
      </profile>  
  </profiles>

执行命令 tomcat7:run -P pro  发现以9205端口启动

执行命令 tomcat7:run -P dev  发现以9105端口启动

-P 后边跟的是profile的id

如果我们只执行命令tomcat7:run ,也是以9105启动,因为我们一开始定义的变量值就是9105,就是在不指定profileID时的默认值.

切换数据库连接配置

编写不同环境的配置文件

(1)我们在pinyougou-dao工程中src/main/resources下创建filter文件夹

(2)filter文件夹下创建db_dev.properties ,用于配置开发环境用到的数据库

env.jdbc.driver=com.mysql.jdbc.Driverenv.jdbc.url=jdbc:mysql://localhost:3306/pinyougoudb?characterEncoding=utf-8env.jdbc.username=rootenv.jdbc.password=123456

(3)filter文件夹下创建db_pro.properties  

env.jdbc.driver=com.mysql.jdbc.Driverenv.jdbc.url=jdbc:mysql://localhost:3306/pinyougoudb_pro?characterEncoding=utf-8env.jdbc.username=rootenv.jdbc.password=123456

(4)修改properties下的db.properties

jdbc.driver=${env.jdbc.driver}jdbc.url=${env.jdbc.url}jdbc.username=${env.jdbc.username}jdbc.password=${env.jdbc.password}

定义Profile

修改pom.xml

代码语言:javascript
复制
  <properties>
          <env>dev</env>
  </properties>
  <profiles>
      <profile>
          <id>dev</id>
          <properties>
              <env>dev</env>
          </properties>
      </profile>    
      <profile>
          <id>pro</id>
          <properties>
              <env>pro</env>
          </properties>
      </profile>
  </profiles>

这里我们定义了2个profile,分别是开发环境和生产环境

资源过滤与变量替换

修改pom.xml ,在build节点中添加如下配置

<filters>   <filter>src/main/resources/filters/db_${env}.properties</filter>   </filters>   <resources>   <resource>   <directory>src/main/resources</directory>   <filtering>true</filtering>   </resource>     </resources>

这里我们利用filter实现对资源文件(resouces) 过滤 maven filter可利用指定的xxx.properties中对应的key=value对资源文件中的{key}进行替换,最终把你的资源文件中的username={key}替换成username=value 

打包

在pinyougou-dao 工程 执行命令:package -P pro ,  解压生成的jar包,观察db.properties配置文件内容,已经替换为生产环境的值。

在pinyougou-sellergoods-service工程 执行命令 pageage  ,解压生成的war包里的pinyougou-dao的jar包,发现也是生成环境的值。

测试运行

【1】连接生产数据库

(1)在pinyougou-dao 工程执行命令:install -P pro

(2)在pinyougou-sellergoods-service:执行命令:tomcat7:run

(3)在pinyougou-shop-web :  执行命令:tomcat7:run

【2】连接开发数据库

(1)在pinyougou-dao 工程执行命令:install -P dev  (或 install   )

(2)在pinyougou-sellergoods-service:执行命令:tomcat7:run

(3)在pinyougou-shop-web :  执行命令:tomcat7:run

切换注册中心连接配置

集中配置注册中心地址

在pinyougou-common工程中properties下创建dubbox.properties

address=192.168.0.135:2181

Spring目录下创建spring配置文件 applicationContext-dubbox.xml 配置如下:

<dubbo:registry protocol= **"zookeeper"* * address= **"${address}"* */>

所有的服务工程与web工程都要依赖pinyougou-common . 并删除每个工程中关于注册中心地址的配置  

安装pinyougou-common到本地仓库,然后测试运行。

MavenProfile配置

在pinyougou-common工程中创建filters目录 ,目录下建立dubbox_dev.properties

env.address=192.168.25.135:2181

建立dubbox_pro.properties

env.address=192.168.25.136:2181

修改dubbox.properties

address=${env.address}

修改pinyougou-common的pom.xml

代码语言:javascript
复制
<properties>
        <env>dev</env>	
</properties>
 <profiles>
    <profile>
        <id>dev</id>
        <properties>
            <env>dev</env>
        </properties>
    </profile>
    <profile>
        <id>pro</id>
        <properties>
            <env>pro</env>
        </properties>
    </profile>
</profiles> 
.............................
 <build>
        <filters>
            <filter>src/main/resources/filters/dubbox_${env}.properties</filter>
        </filters>
        <resources>
            <resource>
                <directory>src/main/resources</directory>
                <filtering>true</filtering>
            </resource>	
        </resources>	
  </build>

参考资料:https://www.cnblogs.com/0201zcr/p/6262762.html

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2021-04-28,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Maven Profile
    • 什么是MavenProfile
      • Maven Profile入门
        • 切换数据库连接配置
          • 编写不同环境的配置文件
          • 定义Profile
          • 资源过滤与变量替换
          • 打包
          • 测试运行
        • 切换注册中心连接配置
          • 集中配置注册中心地址
          • MavenProfile配置
      相关产品与服务
      微服务引擎 TSE
      微服务引擎(Tencent Cloud Service Engine)提供开箱即用的云上全场景微服务解决方案。支持开源增强的云原生注册配置中心(Zookeeper、Nacos 和 Apollo),北极星网格(腾讯自研并开源的 PolarisMesh)、云原生 API 网关(Kong)以及微服务应用托管的弹性微服务平台。微服务引擎完全兼容开源版本的使用方式,在功能、可用性和可运维性等多个方面进行增强。
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档