SpringBoot分离打Jar包的两种方式
admin
2024-02-10 08:31:55

SpringBoot分离打Jar包的两种方式

方式一:基于maven-jar-plugin

此方式基于这个小伙伴的配置改的:https://blog.xlsea.cn/archives/710/

注意

  • 配置中的插件 spring-boot-maven-plugin 用不到的,仅做说明放这里
  • 放了几个 systemScope 的 dependency 作参考
  • 所有依赖包(包括systemScope),会通过插件 maven-dependency-plugin 自动复制到 lib 目录
  • 所有资源文件,会通过插件 maven-resources-plugin 自动复制到 config 目录
  • 此方式打包后,不需要再指定参数启动 -Dloader.path=lib,config
  • 打包完后部署需要的文件清单:(在 target/ 目录下都可以看到)
    • config/**:所有resources下的资源文件
    • lib/**:所有lib包,包括本地依赖
    • xxx.jar:应用Jar
  • 运行:java -jar xxx.jar

简略版配置

libconfigxxxorg.jeecg.JeecgSystemApplication${final-name}org.apache.maven.pluginsmaven-compiler-plugin1.81.8UTF-8org.apache.maven.pluginsmaven-surefire-plugintrueorg.springframework.bootspring-boot-maven-plugintrueorg.apache.maven.pluginsmaven-jar-plugintrue${lib-path}/false${main-class}./${config-path}/ lib/zwdd-1.2.0.jar lib/spire-10.jar${project.build.directory}org.apache.maven.pluginsmaven-dependency-plugincopy-dependenciespackagecopy-dependencies${project.build.directory}/${lib-path}/org.apache.maven.pluginsmaven-resources-plugincopy-resourcespackagecopy-resourcesfalsesrc/main/resources**/*truesrc/main/resources*.yml${project.build.directory}/${config-path}src/main/javafalse**/*.xml**/*.json**/*.ftlsrc/main/resourcesfalse**/*src/main/resourcestrue*.yml

完整配置(带部分注释)

org.jeecgframework.bootjeecg-boot-parent2.4.04.0.0jeecg-boot-module-systemaliyunaliyun Repositoryhttp://maven.aliyun.com/nexus/content/groups/publicfalsecom.spirespire10system${project.basedir}/../lib/Spire.Doc.jarcom.zwdd.apizwdd1.2.0system${project.basedir}/../lib/zwdd-sdk-java-1.2.0.jarlibjarconfigxxxorg.jeecg.JeecgSystemApplication${final-name}org.apache.maven.pluginsmaven-compiler-plugin1.81.8UTF-8org.apache.maven.pluginsmaven-surefire-plugintrueorg.springframework.bootspring-boot-maven-pluginrepackagetrue${main-class}truetrue${profile.name}${project.build.directory}/${jar-path}org.apache.maven.pluginsmaven-jar-plugintrue${lib-path}/false${main-class}./${config-path}/ lib/zwdd-1.2.0.jar lib/spire-10.jar${project.build.directory}org.apache.maven.pluginsmaven-dependency-plugincopy-dependenciespackagecopy-dependencies${project.build.directory}/${lib-path}/org.apache.maven.pluginsmaven-resources-plugincopy-resourcespackagecopy-resourcesfalsesrc/main/resources**/*truesrc/main/resources*.yml${project.build.directory}/${config-path}src/main/javafalse**/*.xml**/*.json**/*.ftlsrc/main/resourcesfalse**/*src/main/resourcestrue*.yml

方式二:基于spring-boot-maven-plugin

注意

  • 这种方式打包出来的Jar基于插件提供的类加载器启动:org.springframework.boot.loader.PropertiesLauncher
  • 所有依赖包(包括systemScope),会通过插件 maven-dependency-plugin 自动复制到 lib 目录
  • 所有资源文件,会通过插件 maven-resources-plugin 自动复制到 config 目录
  • 此方式打包后,需要指定参数启动 -Dloader.path=lib路径,config路径
  • 打包完后部署需要的文件清单:(在 target/ 目录下都可以看到)
    • config/**:所有resources下的资源文件
    • lib/**:所有lib包,包括本地依赖
    • xxx.jar:应用Jar
  • 运行:java -Dloader.path=lib,config -Dspring.profiles.active=dev -jar main.jar

配置参考

mainorg.apache.maven.pluginsmaven-compiler-plugin1.81.8UTF-8org.mapstructmapstruct-processor1.4.1.Finalorg.projectlomboklombok1.18.12org.springframework.bootspring-boot-maven-pluginorg.jeecg.JeecgSystemApplicationfalsefalseZIPnothingnothingrepackageorg.apache.maven.pluginsmaven-dependency-plugincopy-dependenciespackagecopy-dependencies${project.build.directory}/lib/org.apache.maven.pluginsmaven-resources-plugincopy-resourcespackagecopy-resourcesfalsesrc/main/resources**/*src/main/resourcestrue*.xml*.yml*.properties${project.build.directory}/configsrc/main/javafalse**/*.xml**/*.json**/*.ftlsrc/main/resourcestrue*.yml*.txt

附录:参考链接

  • SpringBoot项目分离打包
  • maven-jar-plugin插件对scope="system"依赖的处理
  • https://docs.spring.io/spring-boot/docs/current/maven-plugin/reference/htmlsingle/
  • https://www.kancloud.cn/zhangdaiscott/jeecg-boot/3043463
  • Springboot jar包外指定配置文件及原理
  • Spring Boot之application.properites的failed to convert java.lang.String to java.lang.Integer问题解决
  • Maven maven-dependency-plugin包含本地依赖包
  • Spring Boot 分离资源文件打包
  • https://blog.csdn.net/weixin_40461281/article/details/115905734
  • https://www.jianshu.com/p/0277b6a17892

相关内容

热门资讯

山水皆有情!丽江两山一江的千年... 去过丽江、走过虎跳峡的人,大概率都听过哈巴雪山和金沙江的传说。很多人站在峡谷之下,望着奔腾不息的金沙...
活力中国调研行丨“殷”你而来 ... 9月12日,游客在殷墟博物馆“甲骨文展厅”内参观。位于河南省安阳市的殷墟博物馆新馆是首个全景式展现商...
浦江之夜赴美好相逢,第37届上... 9月12日晚,黄浦江畔灯火璀璨,第37届上海旅游节大巡游在外滩中山东一路上演。不少观众早早便来到外滩...
美丽中国丨秋韵紫鹊界 梯田入画... 这是9月11日拍摄的紫鹊界梯田(无人机照片)。 金秋九月,湖南省娄底市新化县紫鹊界梯田稻谷渐次成熟。...
中国之巅奏响《共同的节日》,千... 千吨阻尼器,“迎世赛、游上海旅游节”。9月13日,由上海市文化和旅游局指导推出上海旅游·会客│巅峰之...