springboot打包没有可执行的jar?打包成功jar没有将依赖打包入jar。

今天我在开发自己的小项目的时候发现了这个问题:springboot打包没有可执行的jar?打包成功jar没有将依赖打包入jar。详细点说就是:在idea执行package,执行过程没有问题,点开项目目录下的target文件夹时里面只有一个jar,这个jar也就43kb,这个大小肯定不是可执行的。以前打包项目都会有两个jar,一个体积小的,一个体积大的,大的比小的大大概30倍,原因是将依赖打包进去了所以大。直接执行大的jar就可以运行项目。接下来看看解决过程。

这是我最开始的打包插件依赖

<build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.8.1</version>
                <configuration>
                    <source>1.8</source>
                    <target>1.8</target>
                    <encoding>UTF-8</encoding>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>

然后在idea执行package:
在这里插入图片描述
执行完成以后打开项目目录下的target:
在这里插入图片描述
和开头说的情况一样,只有一个没有将依赖打包进去的jar,如果执行肯定是找不到主类什么的。

解决方法和原因

原因是:本来提供的插件配置中,只包含了 Spring Boot Maven 插件,它是用于打包 Spring Boot 应用程序所必需的插件,并不会将项目的依赖项打包到生成的 jar 文件中。如果你希望生成的 jar 文件包含依赖项并且是可执行的,你需要添加其他插件和配置。
以下是一种常见的方法是使用 Maven Shade 插件来创建一个可执行的、包含所有依赖项的 fat jar。你可以在你的 pom.xml 文件中添加以下 Shade 插件配置:

<plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.8.1</version>
                <configuration>
                    <source>1.8</source>
                    <target>1.8</target>
                    <encoding>UTF-8</encoding>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <configuration>
                    <includeSystemScope>true</includeSystemScope>
                </configuration>
                <executions>
                    <execution>
                        <goals>
                            <goal>repackage</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
        </plugins>

此配置将在 Maven 的 package 阶段执行 Shade 插件,并在生成的 jar 文件中包含所有的依赖项。然后,重新执行构建命令 (mvn clean package) 进行打包,并查看生成的 jar 文件是否包含了依赖项。请注意,使用 Shade 插件来创建 fat jar 可能会导致部分依赖项冲突或其他问题。如果遇到这样的情况,请根据具体的错误消息进行调整和解决。另外,如果你的项目使用了其他插件(例如 Spring Boot Maven 插件、Maven Assembly 插件等),可能需要相应地进行配置调整以确保打包方式正确。
以上方法仅作参考,每个人项目都不一样,如果使用这个方法不能解决你的问题那就项目跨域作为你的参考。

  • 5
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值