当前位置: 首页 > news >正文

Maven 不同环境灵活构建

需求:
使用 Maven根据不同的构建环境(如开发、测试、生产)来定义不同的配置,实现灵活的构建管理。
需要Demo项目的可以参考:我的demo项目

一、项目分层

一般的初创项目不会有特别多的配置文件,所以使用 spring.profiles.active就可以满足需求,但伴随项目规模扩大,引入的依赖/中间件越多,配置文件越多,仅仅靠单一的文件无法满足,可以参考下面的结构:

├── src
│   ├── main
│   │   ├── java
│   │   │   └── com
│   │   │       └── github
│   │   └── resources
│   │       ├── resources-env
│   │       │   ├── dev
│   │       │   └── prod
│   │       └── static

1. 使用 Maven 配置不同环境

在 Maven 中,<profiles> 是一个非常强大的功能,它允许你根据不同的构建环境(如开发、测试、生产)来定义不同的配置。在 pom.xml 文件中使用 <profiles>,可以对插件、依赖、属性等进行差异化配置,进而实现灵活的构建管理。

1.1 配置不同的环境

pom.xml配置如下:

<profiles><!-- 本地开发 --><profile><id>dev</id><properties><env>dev</env></properties><activation><activeByDefault>true</activeByDefault> <!-- 默认使用 dev --></activation></profile><!-- 测试 --><profile><id>test</id><properties><env>test</env></properties></profile><!-- 预发 --><profile><id>pre</id><properties><env>pre</env></properties></profile><!-- 生产 --><profile><id>prod</id><properties><env>prod</env></properties></profile>
</profiles>

1.2 配置构建信息

pom.xml文件如下:

 <build><resources><resource><directory>src/main/resources</directory><filtering>true</filtering></resource><resource><directory>src/main/resources/resources-env/${env}</directory><filtering>true</filtering> <!-- 启用资源过滤 --></resource></resources><plugins><!--     spring 配置文件可以使用占位符读取pom.xml中的变量 例如 @env@       --><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-resources-plugin</artifactId><version>3.2.0</version><configuration><delimiters><delimiter>@</delimiter></delimiters><useDefaultDelimiters>false</useDefaultDelimiters></configuration></plugin></plugins></build>

1.3 Spring 配置文件激活不同环境的配置文件

application.properties 文件配置如下:

spring.profiles.active=@env@

1.4 构建项目

命令参考:

mvn clean package -Pprod

二、可能遇到的问题

2.1 IDEA直接启动项目,读取不到环境配置文件

项目环境变量设计有问题。

解决方法:
IDEA 操作 File -> Project Structure -> Modules 设置 Resources 就可以了

在这里插入图片描述

2.2 启动项目,报错:IOException: DerInputStream.getLength()

错误原因是因为 <filtering>true</filtering> 会进行文件过滤,非纯文本文件(例如.p12二进制文件)需要进一步配置。

参考:解决方案

2.3 Maven 打包缺少环境配置文件

Spring 项目配置文件位置:

  • 默认 src/main/resources 目录下的文件
  • config 子目录下的配置文件

打包时需要进一步处理。

参考:解决方案

三、进一步优化

3.1 缩小应用jar包的体积

伴随项目依赖越来越大,应用jar包的体积会越来越大,可以进一步优化。

参考:优化依赖打包


http://www.mrgr.cn/news/56877.html

相关文章:

  • 408算法题leetcode--第38天
  • 酒茶香连锁大平台周浦店签约仪式成功举办,携手并进共创辉煌
  • python 文件防感染扫描
  • Golang 怎么高效处理ACM模式输入输出
  • C语言 动态数据结构的C语言实现单向链表-2
  • C++之函数模板(还差拓展阅读)
  • Kotlin学习第一课
  • 通过滑动控制 图片3d(多张视频序列帧图片) 展示
  • linux调用exit函数退出进程,变跟的文件内容会立即同步到磁盘吗
  • 人大金仓下载,有人知道怎么解决吗
  • 如何在本地运行threejs官方示例
  • 模组典型上网业务的AT上网流程,明明白白告诉你!
  • 26备战秋招day11——基于CoNLL-2003的bert序列标注
  • pikachu靶场File Inclusion-local测试报告
  • Python爬取京东商品信息,详细讲解,手把手教学(附源码)
  • visio图片三维旋转后导出,格式错乱怎么解决?
  • 解锁团队高效秘诀:5款顶尖PHP任务管理工具推荐
  • 视频转换为8K60帧率
  • opencv - py_photo - py_non_local_means 非局部均值去噪
  • YOLO11改进-模块-引入分层互补注意力混合器HRAMi
  • AI大模型会对我们的生活带来什么改变?普通人终于有机会感觉到大模型的用处了
  • 网址工具(完善中)
  • ssh scp提示Bad configuration option: GSSAPIKexAlgorithms
  • Nodejs上传阿里云oss图片案例
  • antv g6
  • Ping32数据保护工具,提供全面的数据安全解决方案