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...
原创 吴... 你家门口那条吃了二十年的小吃街,突然被央视盯上了是什么感觉? 5月16日,吴奇隆跟着央视主持人邹韵、...