首页 > 其他分享 >springboot如何用jar包启动,同时为不同机房设置不同的配置文件

springboot如何用jar包启动,同时为不同机房设置不同的配置文件

时间:2023-12-01 11:34:17浏览次数:40  
标签:assembly springboot 配置文件 xxx jar maven conf

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

作者:京东科技 李意文

来源:京东云开发者社区 转载请注明来源

标签:assembly,springboot,配置文件,xxx,jar,maven,conf
From: https://www.cnblogs.com/jingdongkeji/p/17869341.html

相关文章

  • springboot云HIS信息管理系统
    系统功能:为居民建立一份动态、连续、实时、共享的个人电子健康档案,包括家庭和个人信息采集、编辑、常见病诊疗、疾病预防控制服务和健康教育。针对基层医院的业务特点,实现以财务核算为基础,以临床医疗服务为中心的全程信息化管理,主要包括以下业务模块:门诊住院收费管理、以电子病历......
  • 基于SpringBoot的在线视频教育平台-计算机毕业设计源码+LW文档
    一、选题背景及选题意义(国内外研究现状、初步设想及拟解决的问题):选题背景及意义:在线教育顾名思义,是以网络为介质的教学方式,通过网络,学员与教师即使相隔万里也可以开展教学活动;此外,借助网络课件,学员还可以随时随地进行学习,真正打破了时间和空间的限制,对于工作繁忙,学习时间不固定的......
  • Springboot017学生读书笔记共享-计算机毕业设计源码+LW文档
    摘要本论文主要论述了如何使用JAVA语言开发一个读书笔记共享平台,本系统将严格按照软件开发流程进行各个阶段的工作,采用B/S架构,面向对象编程思想进行项目开发。在引言中,作者将论述读书笔记共享平台的当前背景以及系统开发的目的,后续章节将严格按照软件开发流程,对系统进行各个阶......
  • spark提交参数 [spark.yarn.dist.jars] 和 [spark.yarn.jars ]区别
    spark.yarn.dist.jars作用用于指定分发到集群节点上的JAR包的路径。工作原理Spark应用程序的执行器会将这些JAR包分发到它们的本地文件系统上。这样,应用程序可以在执行期间访问这些JAR包。使用场景适用于应用程序的依赖项,这些依赖项不需要在整个集群中共......
  • SSM SpringBoot vue考勤信息管理系统
    SSMSpringBootvue考勤信息管理系统系统功能登录注册个人中心部门信息管理上班时间管理考勤信息管理员工信息管理签到管理请假信息管理加班申请管理出差申请管理开发环境和技术开发语言:Java使用框架:SSM(Spring+SpringMVC+Mybaits)或SpringBoot前端:v......
  • SpringBoot Resolved [org.springframework.web.multipart.support.MissingServletRe
    SpringBootResolved[org.springframework.web.multipart.support.MissingServletRequestPartException:Requiredrequestpart'file'isnotpresent]IDEA报错信息这个错误主要主要是指后端通过@RequestParam("file")注解标注的MultipartFile参数并没有获取到文件参数为n......
  • SpringBoot集成hutool配置定时任务,支持crontab和quartz表达式
    1、pom.xml引入hutool<dependency> <groupId>cn.hutool</groupId> <artifactId>hutool-all</artifactId> <version>修改version</version></dependency>2、Java文件packagecom.xxx.schedule;importcn.hutool.cron.CronUtil......
  • 【Spring】SpringBoot+RabbitMQ(direct/fanout/topic)の構築方法
     ■POM.xmlの中で、下記の内容を追加<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-amqp</artifactId></dependency><dependency>......
  • SpringBoot的配置文件application.yml及加载顺序详解
    SpringBoot配置文件application.yml及加载顺序配置文件分类自定义配置文件配置文件总结Springboot中application.yml、application.properties和bootStrap.yml加载顺序SpringApplication位于项目根目录以jar包发布springboot项目时若application.yml和bootStra......
  • Springboot开发的应用为什么这么占用内存
    Springboot开发的应用为什么这么占用内存Java的原罪Java程序员比c或者是c++程序员相比轻松了很多.不要管理繁杂的内存申请与释放,也不用担心因为忘记释放内存导致很严重的内存泄漏.因为JAVA使用GC垃圾回收的机制实现了内存的自动管理.自凡是自动管理,就需要有单独的内存......