基于maven的profile实现动态选择配置文件_leapmie-编程思维

需求

根据选择不同的部署环境自动替换相关配置变量,如连接的数据库等。

最终效果概览

  • 部署环境分为dev和release
  • 工程目录结构
  myproject
    |-profile
    |   |-dev
    |   |   |-dbconfig.properties
    |   |-release
    |        |-dbconfig.properties
    |-src
    |   |-main
    |       |-java
    |       |-webapp
    |       |-resources
    |           |-dbconfig.properties
    |-pom.xml
  • 部署时执行命令
    • dev
      mvn clean package -Pdev
    • release
      mvn clean package -Prelease

实现步骤

1. 编辑各环境的变量

按如下结构创建目录和文件(各目录、文件的名字和路径均可更改,与下一步的配置对应即可)

  myproject
    |-profile
    |   |-dev
    |   |   |-dbconfig.properties
    |   |-release
    |        |-dbconfig.properties

dev/dbconfig.properties内容如下

jdbc.url=jdbc\:oracle\:thin\:@111.00.00.111\:1521\:orcl
jdbc.username=myproject
jdbc.password=myproject_test
jdbc.dbType=oracle

release/dbconfig.properties内容如下

jdbc.url=jdbc\:oracle\:thin\:@222.00.00.222\:1521\:orcl
jdbc.username=myproject
jdbc.password=myproject_release
jdbc.dbType=oracle

项目实际访问的数据库配置文件位于myproject/src/main/resources/dbconfig.properties,内容如下

jdbc.url=${jdbc.url}
jdbc.username=${jdbc.username}
jdbc.password=${jdbc.password}
jdbc.dbType=${jdbc.dbType}

在部署过程中${xxx}将被替换为对应环境的值,变量名称与dev/dbconfig.properties、release/dbconfig.properties的字段名对应。

2. pom.xml中配置profile

在pom.xml的<project></project>中添加如下配置

<profiles>
	<profile>
		<!-- 开发环境 -->
		<id>dev</id>
		<activation>
			<activeByDefault>true</activeByDefault>
		</activation>
		<build>
			<filters>
				<filter>${basedir}/profile/dev/dbconfig.properties</filter>
			</filters>
		</build>
	</profile>

	<profile>
		<!-- 生产环境 -->
		<id>release</id>
		<build>
			<filters>
				<filter>${basedir}/profile/release/dbconfig.properties</filter>
			</filters>
		</build>
	</profile>
</profiles>

此处添加两个profile,分别为开发环境的dev和正式环境的release,其中dev环境配置了<activeByDefault>true</activeByDefault>,指定dev为默认配置

3. 激活过滤资源

pom.xml配置资源时,针对待替换的资源设置<filtering>true</filtering>。本例中配置为src/main/resources下的所有properties文件都需要检测替换。

<resources>
    <resource>
        <directory>src/main/resources</directory>
            <includes>
                <include>**/*.properties</include>
	    </includes>
	<filtering>true</filtering>
    </resource>
    <resource>
        <directory>src/main/resources</directory>
    </resource>
</resources>

4. 部署

mvn命令中-P可指定profile
根据配置中profile的id可选择对应的部署环境,如部署到正式环境时执行如下命令即可完成打包
mvn clean package -Prelease

其他

IDEA中的使用

在idea的Maven Project标签中可以看到项目配置的profile,如果通过<activeByDefault>true</activeByDefault>指定了默认环境,在项目构建过程将会自动勾选默认的环境,如此可以在其他开发成员对profile概念不熟悉时仍然能正常运行项目。

版权声明:本文版权归作者所有,遵循 CC 4.0 BY-SA 许可协议, 转载请注明原文链接
https://www.cnblogs.com/leap/p/7551679.html

jquery的工厂函数$()的妙用_长白山-编程思维

jQuery的工厂函数$()的妙用 1.理解DOM结构:祖先元素,父元素,子元素,兄弟元素,每一个元素都是一个DOM对象 2.必须先用工厂函数$()将DOM对象转为jQuery对象,才可以使用jQuery中的方法 3.$(选择器): 将选择获取到的DOM对象包装/转化为jquery对象 4.jQuery对象与DOM对象

asp.net core在docker中的健康检查(healthcheck)_波多尔斯基-编程思维

在使用docker-compose的过程中,很多程序都提供了健康检查(healthcheck)的方法,通过健康检查,应用程序能够在确保其依赖的程序都已经启动的前提下启动,减少各种错误的发生,同时,合理设计的健康检查也能够提供给外界关于应用程序状态的一些信息。 大多数docker镜像的详细说明中,会交代如何进行健康检查

部署前后端为独立的 docker 节点_zewanhuang-编程思维

在『服务器部署 Vue 和 Django 项目的全记录』一文中,介绍了在服务器中使用 Nginx 部署前后端项目的过程。然而,当 Web 应用流量增多时,需要考虑负载均衡、流量分发、容灾等情况,原生的部署方式通常难以满足需求。此时,引入 Docker 部署多节点,能够在单台高性能服务器或服务器集群中搭建更完善的部署架构

javascript编码规范指南_leapmie-编程思维

前言     本文摘自Google JavaScript编码规范指南,截取了其中比较容易理解与遵循的点作为团队的JavaScript编码规范。   JavaScript 语言规范 变量     声明变量必须加上 var 关键字.     当你没有写 var, 变量就会暴露在全局上下文中, 这样很可能会和现有变量冲突

我的vue之旅、02 es6基础、模块、路径、io_小能日记-编程思维

自定义模块 为什么要模块?模块化源代码能给我们带来什么好处? 试想一个巨无霸网购平台,在没有模块化的情况下,如果出现bug,程序员就要在几百万行代码里调试,导致后期维护成本上升,为了解决问题,模块化按功能切分,把大问题转换成小问题,让每个模块独立运营,通过接口对外开放,让程序统一调用,降低程序出错的风险,也能方便升级