0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

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

京东云 来源:京东科技 李意文 作者:京东科技 李意文 2024-10-19 16:48 次阅读

作者:京东科技 李意文

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 >

最终效果如下:

wKgaomcQeDuADj7fAAN472XZMDI744.png

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

wKgZomcQeDyAcWLFAAVDMAZcMx4776.png

特别注意:

java -jar XX

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



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

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



5、测试是否生效

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

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



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

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

审核编辑 黄宇

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

    关注

    0

    文章

    430

    浏览量

    17147
  • SpringBoot
    +关注

    关注

    0

    文章

    173

    浏览量

    181
收藏 人收藏

    评论

    相关推荐

    JAR文件jar命令详解

    制作可执行的JAR文件jar命令详解常常在网上看到有人询问:如何把 java 程序编译成 .exe 文件。通常回答只有两种,一种是制作一
    发表于 07-12 08:37

    几种Linux下后台启动jar的方法介绍

      当我们使用SpringBoot的方式开发好了我们的应用,放到我们的Linux服务器上准备上线,首先想到的可能就是通过 java -jar xxx.jar 的方式来运行我们的jar
    发表于 07-22 08:02

    SpringBoot配置嵌入式Servlet

    注册Filter注册ListenerSpringBoot注册DispatcherServlet切换嵌入式Servlet容器SpringBoot默认使用Tomcat作为嵌入式的Servlet容器定制和修改Servlet容器相关配置可以
    发表于 12-20 06:19

    开卡配置文件设置工具,sss量产INI文件设置工具

    开卡配置文件设置工具,sss量产INI文件设置工具
    发表于 04-21 01:22 27次下载
    开卡<b class='flag-5'>配置文件</b><b class='flag-5'>设置</b>工具,sss量产INI<b class='flag-5'>文件</b><b class='flag-5'>设置</b>工具

    jar与war之间不得不说的事

    ava编译好之后生成class文件,但如果直接发布这些class文件的话会很不方便,所以就把许多的class文件打包成一个jarjar中除
    的头像 发表于 12-12 15:32 5210次阅读
    <b class='flag-5'>jar</b>与war之间不得不说的事

    SpringBoot配置文件application

    Map配置 YML配置文件: sys-num: mymap: "{'a':'aaa','b':'bbb'}" 方法内: public class learnMap { @Value
    的头像 发表于 01-13 15:28 651次阅读

    SpringBoot部署打包成jar和war有什么不同呢?

    我的一个springboot项目,用mvn install打包成jar,换一台有jdk的机器就直接可以用java -jar
    的头像 发表于 04-07 11:30 868次阅读

    有哪些方法可以读取Springboot配置呢?

    配置文件中获取属性应该是SpringBoot开发中最为常用的功能之一,但就是这么常用的功能,仍然有很多开发者在这个方面踩坑。
    的头像 发表于 06-28 10:00 531次阅读
    有哪些方法<b class='flag-5'>可以</b>读取<b class='flag-5'>Springboot</b>的<b class='flag-5'>配置</b>呢?

    Spring Boot配置加载相关知识

    Spring BOOT 启动参数 在Java Web的开发完成后,以前我们都会打包成war文件,然后放大web容器,比如tomcat、jetty这样的容器。现在基于SpringBoot开发的
    的头像 发表于 10-07 15:47 491次阅读

    创建jar文件的过程

    在这篇文章中,我们将介绍一下以编程方式创建jar文件的过程。在编写软件时,最终我们需要将其部署到生产状态。在某些情况下,使用带有独立文件的classpath是可以的。通常情况下,处理一
    的头像 发表于 10-08 15:36 832次阅读

    linux修改网卡ip配置文件

    Linux是一种开源的操作系统,因此,它给用户提供了很高的自由度,可以根据个人需要进行各种定制和配置。其中,修改网络接口配置文件是常见的操作,可以通过修改网卡ip
    的头像 发表于 11-17 10:51 2256次阅读

    springboot的全局配置文件有几种

    Spring Boot是一种快速开发框架,其通过提供配置文件来实现对应用程序的配置。全局配置文件在Spring Boot中起着非常重要的作用,可以用于
    的头像 发表于 12-03 15:28 1582次阅读

    springboot的核心配置文件有哪些

    的工作量。 Spring Boot的核心配置文件主要有以下几个: application.properties:Spring Boot应用程序的主要配置文件。它使用Java的键值对格式来定义各种配置属性
    的头像 发表于 12-03 15:30 1177次阅读

    php的配置文件是什么

    配置文件的名称默认为php.ini。该文件通常位于PHP安装目录下的conf文件夹中。当PHP解释器启动时,会自动加载php.ini文件
    的头像 发表于 12-04 15:55 1561次阅读

    labview的opc生成配置文件

    的数据交互和通信。在 LabVIEW 中生成 OPC 配置文件有助于实现与其他设备的数据传输和共享,本文将详细介绍如何生成 OPC 配置文件。 首先,在 LabVIEW 中生成 OPC 配置文件,我们
    的头像 发表于 12-26 17:57 1891次阅读