作者:京東科技 李意文
1、首先先把配置文件從jar中抽離
示例代碼:
org.apache.maven.plugins/groupId?>
maven-jar-plugin/artifactId?>
3.2.0/version?>
**/spring-xxx.xml/exclude?>
/excludes?>
/configuration?>
/plugin?>
2、把抽離的配置文件,放到conf目錄下
利用maven-assembly-plugin,抽取配置文件到conf目錄下,
示例代碼:
org.apache.maven.plugins/groupId?>
maven-assembly-plugin/artifactId?>
3.3.0/version?>
src/main/assembly/assembly.xml/descriptor?>
/descriptors?>
/configuration?>
make-assembly/id?>
package/phase?>
single/goal?>
/goals?>
/execution?>
/executions?>
/plugin?>
?
assembly.xml內容如下:
assembly/id?>
zip/format?>
dir/format?>
/formats?>
false/includeBaseDirectory?>
${basedir}/src/bin/directory?>
bin/outputDirectory?>
0755/fileMode?>
/fileSet?>
/fileSets?>
${project.build.directory}/${project.build.finalName}.jar/source?>
lib/outputDirectory?>
/file?>
${basedir}/../xxx/target/classes/spring/spring-xxx.xml/source?>
conf/outputDirectory?>
/file?>
${basedir}/../xxx/target/classes/spring/spring-xxx.xml/source?>
conf/outputDirectory?>
/file?>
/files?>
/assembly?>
最終效果如下:

3、修改maven打包配置將conf加入到classpath中
示例代碼如下:
?
org.apache.maven.plugins/groupId?>
maven-jar-plugin/artifactId?>
3.2.0/version?>
../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包啟動,同時還可以為不同的機房設置不同的配置文件
審核編輯 黃宇
-
機房
+關注
關注
0文章
519瀏覽量
18088 -
SpringBoot
+關注
關注
0文章
177瀏覽量
688
發布評論請先 登錄
springboot的項目如何既要用jar包啟動,同時還可以為不同的機房設置不同的配置文件
評論