经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » Java相关 » Spring » 查看文章
springboot如何用jar包启动,同时为不同机房设置不同的配置文件
来源:cnblogs  作者:京东云技术团队  时间:2023/12/1 11:29:26  对本文有异议

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

示例代码:

  1. <plugin>
  2. <groupId>org.apache.maven.plugins</groupId>
  3. <artifactId>maven-jar-plugin</artifactId>
  4. <version>3.2.0</version>
  5. <configuration>
  6. <excludes>
  7. <exclude>**/spring-xxx.xml</exclude>
  8. </excludes>
  9. </configuration>
  10. </plugin>

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

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

示例代码:

  1. <plugin>
  2. <groupId>org.apache.maven.plugins</groupId>
  3. <artifactId>maven-assembly-plugin</artifactId>
  4. <version>3.3.0</version>
  5. <configuration>
  6. <descriptors>
  7. <descriptor>src/main/assembly/assembly.xml</descriptor>
  8. </descriptors>
  9. </configuration>
  10. <executions>
  11. <execution>
  12. <id>make-assembly</id>
  13. <phase>package</phase>
  14. <goals>
  15. <goal>single</goal>
  16. </goals>
  17. </execution>
  18. </executions>
  19. </plugin>
  1. assembly.xml内容如下:
  2. <assembly>
  3. <id>assembly</id>
  4. <formats>
  5. <format>zip</format>
  6. <format>dir</format>
  7. </formats>
  8. <includeBaseDirectory>false</includeBaseDirectory>
  9. <fileSets>
  10. <fileSet>
  11. <directory>${basedir}/src/bin</directory>
  12. <outputDirectory>bin</outputDirectory>
  13. <fileMode>0755</fileMode>
  14. </fileSet>
  15. </fileSets>
  16. <files>
  17. <file>
  18. <source>${project.build.directory}/${project.build.finalName}.jar</source>
  19. <outputDirectory>lib</outputDirectory>
  20. </file>
  21. <file>
  22. <source>${basedir}/../xxx/target/classes/spring/spring-xxx.xml</source>
  23. <outputDirectory>conf</outputDirectory>
  24. </file>
  25. <file>
  26. <source>${basedir}/../xxx/target/classes/spring/spring-xxx.xml</source>
  27. <outputDirectory>conf</outputDirectory>
  28. </file>
  29. </files>
  30. </assembly>

最终效果如下:

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

示例代码如下:

  1. <plugin>
  2. <groupId>org.apache.maven.plugins</groupId>
  3. <artifactId>maven-jar-plugin</artifactId>
  4. <version>3.2.0</version>
  5. <configuration>
  6. <archive>
  7. <manifestEntries>
  8. <Class-Path>../conf/</Class-Path>
  9. </manifestEntries>
  10. </archive>
  11. </configuration>
  12. </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包启动,同时还可以为不同的机房设置不同的配置文件

作者:京东科技 李意文

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

原文链接:https://www.cnblogs.com/jingdongkeji/p/17869341.html

 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号