起因
在开发中,遇到这样一个问题:
一个通用的工具类项目,在进行打包时,出现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