springboot项目中第三方jar包打包进jar包

springboot项目中,如果手动引入了jar包,打包时不会将手动引入的第三方jar包打包进价包里,如何处理?

若第三方的jar包的lib和src同级,则maven打包时默认不会将lib下的jar包打包进jar包,处理方式有两种:

方式一:

1.pom.xml文件中引入lib下的第三方jar包的依赖

其中groupId、artifactId、version自己随意填的。scope需要填写system,systemPath需要填写你项目中第三方Jar的位置。${basedir}代表了你这个项目的根目录。

<dependency>
        <groupId>your_organization</groupId>
        <artifactId>your_project_name</artifactId>
        <version>1.0</version>
        <scope>system</scope>
        <systemPath>${basedir}/lib/spring-swing-0.0.1-SNAPSHOT.jar</systemPath>
</dependency>

2.还需在pom.xml里的build之中加入plugin。plugin的groupId和artifactId如下面所示。要加入configuration,里面加入includeSystemScope,值为true,就是要包含scope为system的第三方Jar包。如果不加,则scope为system的第三方Jar包,只会在编译环节起作用,运行时则找不到依赖,system的scope类似于provided,所以必须要加

<build>
        <plugins>
                <plugin>
                        <groupId>org.springframework.boot</groupId>
                        <artifactId>spring-boot-maven-plugin</artifactId>

                        <configuration>
                                <includeSystemScope>true</includeSystemScope>
                        </configuration>
                </plugin>
        </plugins>
</build>

方式二:

将第三方jar包的lib目录放在resources下,maven打包时就会将lib下的jar包打包进jar包

### Spring BootJAR 和 WAR 的区别及适用场景 #### 1. 基础概念对比 JAR 文件是一种标准的 Java 归档文件格式,通常用于封装独立运行的应用程序。而 WAR(Web Application Archive)文件则专门设计用来部署 Web 应用到传统的 Servlet 容器中,比如 Tomcat 或 Jetty[^1]。 #### 2. 打包方式的不同 当将 Spring Boot 项目打包JAR 文件时,默认情况下会嵌入一个轻量级的服务器(如内置的 Tomcat),这使得该应用可以作为独立程直接运行。相比之下,WAR 文件并不自带任何服务器组件,它依赖外部的 Servlet 容器来加载并执行其中的内容[^2]。 #### 3. 启动机制差异 对于基于 JARSpring Boot 应用而言,在命令行下只需简单地输入 `java -jar your-application.jar` 即可完成启动操作。然而如果采用的是 WAR 格式的分发,则需要先将其放置于目标 Servlet 容器内的指定目录之后再由后者负责初始化整个流程[^4]。 #### 4. 结构上的区别 从内部结构上看,WAR 文件除了含 class 文件外还会额外增加 WEB-INF/lib 目录存储第三方库以及 META-INF/MANIFEST.MF 记录元数据信息等内容;与此同时,所有的前端资源也会被保留下来以便能够正常访问页面等功能模块。相反地,JAR 类型仅保存必要的字节码及相关配置项即可满足需求。 #### 5. 性能考量与维护成本分析 由于 JAR 方案无需考虑兼容性问题并且更容易实现自动化运维管理(例如借助 Docker 行容器化),所以在现代微服务架构体系当中更受青睐。不过需要注意的一点是,尽管如此仍然存在某些特殊场合可能更适合选用 WAR 模式——特别是那些已经长期稳定运作的传统 IT 系统环境中[^3]。 综上所述,Spring Boot 提供了灵活多样的发布选项让用户可以根据实际业务特点做出明智决策: - 如果追求高效便捷且倾向于利用最新技术趋势构建现代化解决方案的话,那么毫无疑问应该优先选择 JAR; - 而针对一些受限于历史遗留因素或者特定法规约束无法轻易改变现有基础设施布局的情况来说,WAR 则不失为一种折衷办法. ```bash # 启动 JAR 的方式 java -jar my-spring-boot-app.jar # 将 WAR 放到 Tomcat webapps 下自动解压部署 cp my-spring-boot-app.war /path/to/tomcat/webapps/ ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值