解决SpringBoot项目执行打包install操作后出现repackage failed: Unable to find main class Maven错误的问题

LonelyMan 401 2021-07-26

起因

在开发中,遇到这样一个问题:

一个通用的工具类项目,在进行打包时,出现repackage failed: Unable to find main class,提示找不到主类

Failed to execute goal org.springframework.boot:spring-boot-maven-plugin:2.2.1.RELEASE:repackage (repackage) on project common-util: Execution repackage of goal org.springframework.boot:spring-boot-maven-plugin:2.2.1.RELEASE:repackage failed: Unable to find main class

解决过程

这是一个通用的工具类,不是一个SpringBoot Web工程,没有启动类,就没有main方法。

检查后发现父项目common的父工程内有一个打包的插件

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

如果项目是一个放置通用工具类的工程,那么该项目中不能包括上面的这个打包插件,如果你这个工具类工程依赖有父工程,那么父工程中也不能包括该打包插件,只有你的项目是一个web项目时,含有Main方法的程序入口类,要加该打包插件。

由于放在了顶级父工程的pom文件中,那就是代表了所有子模块都有这个打包插件,所以就会报错。

解决方法就是去掉该插件 。

common中添加如下代码:

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

这样可以让common以及继承common的所有子项目都跳过spring-boot-maven-plugin

参考

https://www.huaweicloud.com/articles/4e3fb14d78c32fa54e16fb6e595c47d9.html

https://blog.csdn.net/catoop/article/details/108711810