SpringBoot 打包成的可执行jar不能被其他项目依赖的问题

本文介绍了如何通过Springboot的maven插件配置,将项目打包成可执行jar和不可执行jar。可执行jar包含所有依赖,而不可执行jar则不包含,适合作为库被其他项目依赖。在使用不可执行jar时,需要注意在Spring入口类中添加额外的@ComponentScan注解,以确保扫描到所有必要的组件。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

springboot默认可执行jar

如果正常打包Springboot项目会打成一个可执行jar,并且里面会有全部的依赖jar。
在这里插入图片描述
就是上面的拥有BOOT-INF文件。这样的可执行jar是无法被其他项目进行pom依赖使用的。

不可执行jar

如果非要将 Spring Boot 打包成一个普通 jar 被其他项目依赖,技术上来说,也是可以的,给 spring-boot-maven-plugin 插件添加如下配置:

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

在这里插入图片描述

第一个jar是可以被导入的不可执行jar,并且去掉了所有依赖jar,
而第二个相反,是可执行jar,并且拥有所有依赖jar。

当使用SpringBoot项目打成的不可执行jar包到其他项目中

一定要在Application,Spring入口类中 添加配置 同时扫描自己的mapper目录和引入的dao(持久层)目录,并且之前不需要声明@ComponentScan({“cn.com.xxx”})因为Spring会帮你扫描全局组件,但是现在引入了新的如果只声明扫描@ComponentScan({“cn.com.demo”})就会导致,不扫描我们自己的组件,所以得一起声明。

@SpringBootApplication
@MapperScan({"cn.com.xxx.mapper","cn.com.xxx.dao"})
@ComponentScan({"cn.com.xxx"})
@ComponentScan({"cn.com.demo"})
@EnableScheduling
public class Application{
    public static void main(String[] args) {
        Application.run(Application.class, args);
    }
}
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一只小小狗

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值