ToB企服应用市场:ToB评测及商务社交产业平台

标题: springboot如何用jar包启动,同时为不同机房设置不同的配置文件 [打印本页]

作者: 不到断气不罢休    时间: 2024-1-21 01:59
标题: springboot如何用jar包启动,同时为不同机房设置不同的配置文件
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包启动,同时还可以为不同的机房设置不同的配置文件
作者:京东科技 李意文
来源:京东云开发者社区 转载请注明来源

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!




欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/) Powered by Discuz! X3.4