南宁专业网站制作,西双版纳傣族自治州勐海县,软文广告发布平台,做图的模板下载网站需求: 使用 Maven根据不同的构建环境#xff08;如开发、测试、生产#xff09;来定义不同的配置#xff0c;实现灵活的构建管理。 需要Demo项目的可以参考#xff1a;我的demo项目 一、项目分层 一般的初创项目不会有特别多的配置文件#xff0c;所以使用 spring.profile… 需求: 使用 Maven根据不同的构建环境如开发、测试、生产来定义不同的配置实现灵活的构建管理。 需要Demo项目的可以参考我的demo项目 一、项目分层 一般的初创项目不会有特别多的配置文件所以使用 spring.profiles.active就可以满足需求但伴随项目规模扩大引入的依赖/中间件越多配置文件越多仅仅靠单一的文件无法满足可以参考下面的结构 ├── src
│ ├── main
│ │ ├── java
│ │ │ └── com
│ │ │ └── github
│ │ └── resources
│ │ ├── resources-env
│ │ │ ├── dev
│ │ │ └── prod
│ │ └── static1. 使用 Maven 配置不同环境 在 Maven 中profiles 是一个非常强大的功能它允许你根据不同的构建环境如开发、测试、生产来定义不同的配置。在 pom.xml 文件中使用 profiles可以对插件、依赖、属性等进行差异化配置进而实现灵活的构建管理。 1.1 配置不同的环境
pom.xml配置如下
profiles!-- 本地开发 --profileiddev/idpropertiesenvdev/env/propertiesactivationactiveByDefaulttrue/activeByDefault !-- 默认使用 dev --/activation/profile!-- 测试 --profileidtest/idpropertiesenvtest/env/properties/profile!-- 预发 --profileidpre/idpropertiesenvpre/env/properties/profile!-- 生产 --profileidprod/idpropertiesenvprod/env/properties/profile
/profiles1.2 配置构建信息
pom.xml文件如下 buildresourcesresourcedirectorysrc/main/resources/directoryfilteringtrue/filtering/resourceresourcedirectorysrc/main/resources/resources-env/${env}/directoryfilteringtrue/filtering !-- 启用资源过滤 --/resource/resourcesplugins!-- spring 配置文件可以使用占位符读取pom.xml中的变量 例如 env --plugingroupIdorg.apache.maven.plugins/groupIdartifactIdmaven-resources-plugin/artifactIdversion3.2.0/versionconfigurationdelimitersdelimiter/delimiter/delimitersuseDefaultDelimitersfalse/useDefaultDelimiters/configuration/plugin/plugins/build1.3 Spring 配置文件激活不同环境的配置文件
application.properties 文件配置如下
spring.profiles.activeenv1.4 构建项目
命令参考
mvn clean package -Pprod二、可能遇到的问题
2.1 IDEA直接启动项目读取不到环境配置文件 项目环境变量设置有问题。 解决方法 IDEA 操作 File - Project Structure - Modules 设置 Resources 就可以了 2.2 启动项目报错IOException: DerInputStream.getLength() 错误原因是因为 filteringtrue/filtering 会进行文件过滤非纯文本文件例如.p12二进制文件需要进一步配置。 参考解决方案
2.3 Maven 打包缺少环境配置文件 Spring 项目配置文件位置 默认 src/main/resources 目录下的文件config 子目录下的配置文件 打包时需要进一步处理。 参考解决方案
三、进一步优化
3.1 缩小应用jar包的体积 伴随项目依赖越来越大应用jar包的体积会越来越大可以进一步优化。 参考优化依赖打包