上海企业投资人名录,怎么优化网站性能,outlook企业邮箱怎么申请,苏州园区网站建设#xff08;1#xff09;Web项目使用Maven进行多模块划分开发之后#xff0c;面临一个问题#xff0c;即如何加载不同环境的配置文件打包发布到不同的环境中#xff1f; #xff08;2#xff09;不同的环境有开发环境、测试环境、线上生产环境等。 #xff08;3#x… 1Web项目使用Maven进行多模块划分开发之后面临一个问题即如何加载不同环境的配置文件打包发布到不同的环境中 2不同的环境有开发环境、测试环境、线上生产环境等。 3本文将围绕这一主题给出具体的实现方案 Maven项目多环境打包配置 文章目录 Maven项目多环境打包配置1.解决思路2.具体实现2.1告诉Maven我们有哪些环境现在默认使用哪个环境2.2准备好各个环境的备置文件2.3告诉Maven具体环境的配置文件在哪里2.4见证奇迹的时刻 3.这种方案的好处4.Maven项目一键热部署配置 1.解决思路
1首先我们要明确一点即我们的需求是如果需要打开发环境的包就只选取开发环境的配置文件如果需要打测试环境的包就只选取测试环境的配置文件如果需要打线上生产环境的包就只选取线上生产环境的配置文件。这件事情交给Maven帮我们干但我们得告诉Maven怎么干。
2还要明确一条主线我们是拿具体环境配置文件中的属性值赋给项目中配置占位符的地方。这个所谓的地方可能是spring的配置文件也可能是其他需要引用配置文件属性值的地方。总的来说就是要完成具体环境配置文件的属性值给占位符赋上值。这件事情也得告诉Maven帮我们干。
2.具体实现
2.1告诉Maven我们有哪些环境现在默认使用哪个环境 !--5.创建多环境5.1适适多种多样的环境让环境能够做多环境的区分需要做两件事1定义出多环境2使用某一种环境--profiles!--5.1.1定义具体的环境开发环境--profileiddev/idpropertiesenvdev/envremote_tomcat_serverhttp://192.168.10.8:8080/manager/text/remote_tomcat_serverserver_nametomcat9/server_nametomcat_usernameadmin/tomcat_usernametomcat_password1234/tomcat_passwordtomcat_context_path/gengducun/tomcat_context_path/properties!--(1)设置默认使用 开发环境 的配置文件--activationactiveByDefaulttrue/activeByDefault/activation/profile!--5.1.2定义具体的环境测试环境--profileidtest/idpropertiesenvtest/envremote_tomcat_serverhttp://192.168.10.6:8080/manager/text/remote_tomcat_serverserver_nametomcat9/server_nametomcat_usernameadmin/tomcat_usernametomcat_password1234/tomcat_passwordtomcat_context_path/gengducun/tomcat_context_path/properties/profile!--5.1.3定义具体的环境线上环境--profileidpro/idpropertiesenvpro/envremote_tomcat_serverhttp://www.gengducun.com/manager/text/remote_tomcat_serverserver_nametomcat9/server_nametomcat_usernameadmin/tomcat_usernametomcat_password1234/tomcat_passwordtomcat_context_path/gengducun/tomcat_context_path/properties/profile/profiles2.2准备好各个环境的备置文件
1目录结构如下:
2具体环境具体配置文件的内容举例
jdbc.drivercom.mysql.cj.jdbc.Driver
jdbc.urljdbc:mysql://192.168.10.8:3306/gdc
jdbc.usernameyourname
jdbc.passwordyourpwd3有占位符的配置文件图上面放在最外层的db.properties
jdbc.driver${jdbc.driver}
jdbc.url${jdbc.url}
jdbc.username${jdbc.username}
jdbc.password${jdbc.password}(4)spring具体引用的地方引用的是放在最外层的db.properties的值
2.3告诉Maven具体环境的配置文件在哪里
1在2.1中已经告诉Maven根据哪个环境去找配置文件 2当前这一步就是告诉Maven从哪个地方去找配置文件 主要靠以下这段搞定
resourcedirectory${project.basedir}/src/main/resources/env/${env}/directoryincludesinclude*/*.xml/includeinclude*/*.properties/includeinclude**.xml/includeinclude**.properties/include/includesfilteringtrue/filtering
/resourcea. p r o j e c t . b a s e d i r / s r c / m a i n / r e s o u r c e s / e n v / {project.basedir}/src/main/resources/env/ project.basedir/src/main/resources/env/{env}这个意思翻译一下就是到项目的资源文件夹resources/env/具体环境配置文件夹下去找。${env}引用的是我们具体的环境例如去dev开发环境文件夹中去找配置文件。 b.include标签说明的是我们要找的资源文件包含哪些文件类型用通配符表示的字符串值是用来去匹配资源文件的只要能匹配上的都算数。
3找到具体的配置文件之后去把有占位符引用的配置文件填充上值。主要靠这句
filteringtrue/filtering至此就完成了将配置文件的具体值填充到有占位符引用的配置文件中。
4贴一下我的完整配置
build!--9.开启目录过滤1只有开启了目录过滤才可以将具体环境的properties配置的值注入到相关的属性文件中--resources!--9.1指定资源文件的目录目前配置表示的是src/main/java目录下的xml文件和properties文件--resourcedirectory${project.basedir}/src/main/java/directoryincludesinclude**/*.xml/includeinclude**/*.properties/include/includes!--对占位符属性文件属性值进行赋值--filteringtrue/filtering/resource!--9.2指定资源文件的目录,当前配置表示的是所有模块的src/main/resources目录下的xml文件和properties文件--resourcedirectory${project.basedir}/src/main/resources/directoryincludesinclude**/*.xml/includeinclude**/*.properties/include/includes!--对占位符属性文件属性值进行赋值--filteringtrue/filtering/resource!--9.3指定资源文件的目录,当前配置表示的是所有模块的src/main/resources/env/具体环境目录中的xml文件和properties文件--resourcedirectory${project.basedir}/src/main/resources/env/${env}/directoryincludesinclude**/*.xml/includeinclude**/*.properties/include/includes!--对占位符属性文件属性值进行赋值--filteringtrue/filtering/resource/resourcestestResourcestestResource!--指定测试资源文件的目录--directory${project.basedir}/src/test/resources/directory!--参与过滤--!--filteringfalse/filtering--/testResource/testResources/build2.4见证奇迹的时刻 1勾选一个环境点击install去查看Maven自动生成的文件中有占位符的文件是否被填充上值了。 3.这种方案的好处
1便于对属性文件值分环境管理不会把pom.xml文件搞得太拥挤。 2对于后续在java代码中读取具体环境开发、测试或线上属性文件的值打下了良好的基础。比如说读取图片上传服务器的路径文件存储服务器的路径等等。 4.Maven项目一键热部署配置 !--8.插件统一管理在子模块中去引用--pluginManagementplugins!--8.1tomcat插件一键热部署Maven项目到多个远程服务器--plugin!--8.1.1tomcat插件的坐标--groupIdorg.apache.tomcat.maven/groupIdartifactIdtomcat7-maven-plugin/artifactIdversion2.2/version!--8.1.2maven项目热部署到远程tomcat服务器的配置,以下配置均是给Maven自己看的--configuration!--1远程tomcat服务器Manager App管理页面的请求路径--url${remote_tomcat_server}/url!--2访问远程服务器tomcat的web项目的用户名与密码这里的tomcat的Web项目指的是有Manager App管理页的那个Web项目--server${server_name}/serverusername${tomcat_username}/usernamepassword${tomcat_password}/password!--3发布的上下文访问路径与tomcat管理目录中的路径对应/表示发布到根目录--path${tomcat_context_path}/path!--updatetrue/update会将发布目录下的数据清空--updatetrue/update/configuration/plugin/plugins/pluginManagement