1、首先先把配置文件从jar中抽离

示例代码:

    org.apache.maven.plugins    maven-jar-plugin    3.2.0                        **/spring-xxx.xml            

2、把抽离的配置文件,放到conf目录下

利用maven-assembly-plugin,抽取配置文件到conf目录下,

示例代码:

    org.apache.maven.plugins    maven-assembly-plugin    3.3.0                        src/main/assembly/assembly.xml                                    make-assembly            package                            single                        
assembly.xml内容如下:  assembly      zip    dir    false            ${basedir}/src/bin      bin      0755                  ${project.build.directory}/${project.build.finalName}.jar      lib              ${basedir}/../xxx/target/classes/spring/spring-xxx.xml      conf              ${basedir}/../xxx/target/classes/spring/spring-xxx.xml      conf      

最终效果如下:

3、修改maven打包配置将conf加入到classpath中

示例代码如下:

                            org.apache.maven.plugins                maven-jar-plugin                3.2.0                                                                 ../conf/                                                                        

最终达到的效果是:

将springboot的jar包解压后,可以看到.MF文件中加了一个类路径 ../conf

特别注意:

java -jar XX

使用-jar启动java进程的,-classpath不会生效了,如果要加类路径,只能通过改maven的打包参数,从而使得.MF文件加了Class-Path属性后,才可以!!!!

4、到部署平台上新建conf文件夹,将要覆盖的配置文件加入进去

这样,部署平台的配置就会覆盖maven打包出来的配置文件

5、测试是否生效

在部署平台上,将部署平台上的配置文件里的,rpc框架的服务别名设置为:xxx

代码里的服务别名是yyy,然后通过测试发现生效的别名是xxx。

因为,springboot启动后,使用的是conf下配置文件,然后conf下的配置文件会被部署平台上新建的配置文件覆盖,

这样为不同的机房新建不同的配置文件,这样也就实现了springboot的项目如何既要用jar包启动,同时还可以为不同的机房设置不同的配置文件

作者:京东科技李意文