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

SpringBoot分离打Jar包的两种方式

方式一:基于maven-jar-plugin

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

注意

  • 配置中的插件 spring-boot-maven-plugin 用不到的,仅做说明放这里
  • 放了几个 systemScopedependency 作参考
  • 所有依赖包(包括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

相关内容

热门资讯

从哈尔滨到长白山闺蜜5天4晚天... 从哈尔滨到长白山闺蜜5天4晚天池+延吉边境:拍照打卡真实体验 一、出发前的纠结:比老板还难搞的攻略,...
搭上低空经济、AI文旅?两连板... 来源:e公司 桂林旅游(000978)回应市场热点。 9月8日,桂林旅游再度涨停,斩获2连板。当天晚...
八达岭长城国庆怎么去最省心?坐... 八达岭长城是来北京必去的景点之一,尤其是第一次来北京的游客。但国庆期间去八达岭,最大的挑战不是爬长城...
秋日睦邻游园会热闹开锣!居民重... (来源:上观新闻) 近日,殷行街道包头路社区睦邻活动室里,举办了一场秋日睦邻趣味游园会,辖区居民、户...
带父母去长白山怎么玩?3天2晚... 带父母去长白山怎么玩?3天2晚天池攻略,有些坑帮你们踩过了 一句话总结:这次带父母去长白山,我选了黑...