springboot的项目如何既要用jar包启动,同时还可以为不同的机房设置不同的配置文件

电子说

1.3w人已加入

描述

作者:京东科技 李意文

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

示例代码:

 

< plugin >
    < groupId >org.apache.maven.plugins< /groupId >
    < artifactId >maven-jar-plugin< /artifactId >
    < version >3.2.0< /version >
    < configuration >
        < excludes >
            < exclude >**/spring-xxx.xml< /exclude >
        < /excludes >
    < /configuration >
< /plugin >

 

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

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

示例代码:

 

< plugin >
    < groupId >org.apache.maven.plugins< /groupId >
    < artifactId >maven-assembly-plugin< /artifactId >
    < version >3.3.0< /version >
    < configuration >
        < descriptors >
            < descriptor >src/main/assembly/assembly.xml< /descriptor >
        < /descriptors >
    < /configuration >
    < executions >
        < execution >
            < id >make-assembly< /id >
            < phase >package< /phase >
            < goals >
                < goal >single< /goal >
            < /goals >
        < /execution >
    < /executions >
< /plugin >

 


 

 

assembly.xml内容如下:
< assembly >
  < id >assembly< /id >
  < formats >
    < format >zip< /format >
    < format >dir< /format >
  < /formats >
  < includeBaseDirectory >false< /includeBaseDirectory >
  < fileSets >
    < fileSet >
      < directory >${basedir}/src/bin< /directory >
      < outputDirectory >bin< /outputDirectory >
      < fileMode >0755< /fileMode >
    < /fileSet >
  < /fileSets >
  < files >
    < file >
      < source >${project.build.directory}/${project.build.finalName}.jar< /source >
      < outputDirectory >lib< /outputDirectory >
    < /file >
    < file >
      < source >${basedir}/../xxx/target/classes/spring/spring-xxx.xml< /source >
      < outputDirectory >conf< /outputDirectory >
    < /file >
    < file >
      < source >${basedir}/../xxx/target/classes/spring/spring-xxx.xml< /source >
      < outputDirectory >conf< /outputDirectory >
    < /file >
  < /files >

< /assembly >

 

最终效果如下:

机房

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

示例代码如下:


 

 

            < plugin >
                < groupId >org.apache.maven.plugins< /groupId >
                < artifactId >maven-jar-plugin< /artifactId >
                < version >3.2.0< /version >
                < configuration >
                    < archive >
 < manifestEntries >
                            < Class-Path >../conf/< /Class-Path >
                        < /manifestEntries >
                    < /archive >
                < /configuration >
            < /plugin >

 


 

最终达到的效果是:

将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包启动,同时还可以为不同的机房设置不同的配置文件

审核编辑 黄宇

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分