news 2026/4/18 14:28:27

SpringBoot打包可执行jar包启动方式:JarLauncher、PropertiesLauncher

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
SpringBoot打包可执行jar包启动方式:JarLauncher、PropertiesLauncher

文章目录

  • 1, 项目结构
  • 2, 默认打包可执行jar启动主类:JarLauncher
  • 3, 打包可执行jar启动主类:PropertiesLauncher

1, 项目结构

springboot-tar-demo/ ├── src/ │ ├── main/ │ │ ├── assembly/ │ │ │ └── assembly.xml # 上述tar结构定义文件 │ │ ├── java/ │ │ │ └── com/my/test/ │ │ │ └── Application.java # 业务主类(含main方法) │ │ └── resources/ │ │ └── application.yml # 配置文件 │ └── test/ └── pom.xml

2, 默认打包可执行jar启动主类:JarLauncher

# 1,maven打包配置:<build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId><version>2.7.14</version><!-- 适配你的Spring Boot版本 --><configuration><archive><manifest><!-- 可选:默认就是JarLauncher,无需手动配 --><mainClass>org.springframework.boot.loader.JarLauncher</mainClass><!-- 关键:添加Class-Path条目 --><addClasspath>true</addClasspath><!-- 指定Class-Path中依赖的前缀 --><classpathPrefix>lib/</classpathPrefix></manifest><manifestEntries><!-- 指定业务主类 --><Start-Class>com.my.test.Application</Start-Class><!-- Created-By会由Maven Archiver自动生成,无需手动配 --></manifestEntries></archive></configuration><executions><execution><goals><goal>repackage</goal><!-- 关键:打包为Spring Boot可执行JAR --></goals></execution></executions></plugin></plugins></build>
# 2,打包后的目录结构[root@host-t1 xx]# ls -Fconfig/ lib/ logs/ xx.jar start.sh*# 3,查看可执行jar包[root@host-t1 xx]# vim xx.jarMETA-INF/MANIFEST.MF:Manifest-Version:1.0Implementation-Title: test-Application Implementation-Version:1.2.3 Class-Path: lib/config-generator-5.6.8.jar lib/jline-3.3.0.jar lib/jac kson-databind-2.10.5.1.jar lib/jackson-annotations-2.10.5.jar lib/ja... r lib/gsjdbc4.jar Build-Jdk-Spec:1.8Created-By: Maven Archiver3.4.0 Main-Class: com.my.test.Application# 4,启动方式-不灵活:[root@host-t1 xx2]# java -jar xx.jar

3, 打包可执行jar启动主类:PropertiesLauncher

# 1,maven打包配置:<build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId><version>2.7.14</version><configuration><archive><manifest><!-- 指定启动器为PropertiesLauncher --><mainClass>org.springframework.boot.loader.PropertiesLauncher</mainClass></manifest><!-- 可选:配置默认的外部classpath和业务主类 --><manifestEntries><Start-Class>com.my.test.Application</Start-Class><Spring-Boot-Classpath>lib/</Spring-Boot-Classpath></manifestEntries></archive></configuration><executions><execution><goals><goal>repackage</goal></goals></execution></executions></plugin></plugins></build>
# 2,打包后的目录结构[root@host-t1 xx2]# ls -Fconfig/ lib/ start.sh* xx2.jar# 3,查看可执行jar包[root@host-t1 xx2]# vim xx2.jarMETA-INF/MANIFEST.MF: Manifest-Version:1.0# 可选:指定默认加载的外部classpath(同级lib目录,支持通配符)#Spring-Boot-Classpath: lib/# “类路径索引文件”,提前记录所有依赖的位置(可以记录一个或多个jar路径),启动时直接读取索引,无需遍历#Spring-Boot-Classpath-Index: BOOT-INF/classpath.idxImplementation-Title: boot Implementation-Version:1.2#内部的业务类(编译后的 .class 文件)、配置文件、静态资源存放路径,默认BOOT-INF/classes/Spring-Boot-Classes: BOOT-INF/classes/#内部 依赖库的存放路径(默认是 BOOT-INF/lib/)Spring-Boot-Lib: BOOT-INF/lib/ Build-Jdk-Spec:1.8Spring-Boot-Version:2.7.14 Created-By: Maven JAR Plugin3.2.2#PropertiesLauncher是 Spring Boot 内置的三种启动器之一(另外两种是 JarLauncher(默认)、WarLauncher)#核心优势是支持高度灵活的外部化配置:#无需自定义类加载器,就能动态加载外部目录(如同级 lib)的所有 JAR 包;#支持运行时指定 classpath、配置文件路径、主类等Main-Class: org.springframework.boot.loader.PropertiesLauncher#指定你的业务主类(也可运行时指定)Start-Class: com.my.test.Application# 4,启动方式-灵活:[root@host-t1 xx2]#java -Dloader.path=lib/,ext-lib/ -jar xx2.jar java -Dloader.main=com.example.AnotherApp -jar xx2.jar
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/18 8:50:58

AI系统安全加固方案:架构师如何设计安全的密钥管理系统

AI系统安全加固方案&#xff1a;架构师如何设计安全的密钥管理系统 一、引言&#xff1a;AI时代&#xff0c;密钥管理为什么是“生命线”&#xff1f; 2023年&#xff0c;某头部AI公司发生了一起API密钥泄露事件&#xff1a;一名工程师将包含LLM推理API密钥的配置文件误推到公共…

作者头像 李华
网站建设 2026/4/18 8:44:05

一天一个开源项目(第19篇):Folo - AI驱动的下一代信息阅读器

引言 “你的思想就是你阅读的内容——我们已经被嘈杂的信息流困扰太久了&#xff01;” 这是"一天一个开源项目"系列的第19篇文章。今天带你了解的项目是 Folo&#xff08;GitHub&#xff09;。 在信息爆炸的时代&#xff0c;我们每天面对海量的 RSS 源、新闻网站、…

作者头像 李华
网站建设 2026/4/18 8:42:39

用户影响评估:故障场景的体验指标

理解故障场景的用户影响在软件开发生命周期中&#xff0c;故障场景是不可避免的挑战。然而&#xff0c;当系统崩溃、响应延迟或功能失效时&#xff0c;用户所受的影响往往被低估。作为软件测试从业者&#xff0c;我们的职责不仅是识别bug&#xff0c;更要量化这些故障对用户体验…

作者头像 李华
网站建设 2026/4/18 9:44:29

大数据推荐系统的可扩展性设计

大数据推荐系统的可扩展性设计&#xff1a;构建高效与灵活的推荐引擎 摘要/引言 在当今数字化时代&#xff0c;大数据推荐系统无处不在&#xff0c;从电商平台推荐心仪商品&#xff0c;到音乐、视频平台推送符合口味的内容&#xff0c;极大地提升了用户体验。然而&#xff0c;随…

作者头像 李华
网站建设 2026/4/18 8:46:19

‌微服务韧性:服务网格故障注入

故障注入不是破坏&#xff0c;是测试的终极武器‌在微服务架构中&#xff0c;服务间依赖复杂、调用链路动态变化&#xff0c;传统测试手段难以覆盖生产级异常场景。‌服务网格&#xff08;Service Mesh&#xff09;通过 Sidecar 代理透明拦截流量&#xff0c;为软件测试团队提供…

作者头像 李华
网站建设 2026/4/18 10:41:30

混沌测试中的预期定义困境与突破路径

在故障注入式测试中&#xff0c;"测试预言"&#xff08;Test Oracle&#xff09;指验证系统行为是否符合预期的判定机制。混沌测试通过主动注入故障验证系统韧性&#xff0c;其核心挑战在于&#xff1a;当系统被刻意破坏时&#xff0c;如何定义"正确行为"的…

作者头像 李华