最近公司使用springboot开发项目,使用的构建工具是maven,项目分了很多模块,并且模块之间还存在一定的依赖,比如说一个项目common是提供各项目通用的工具类,公共的类等
当对工程执行:mvn clean package 就会包依赖 pyyadmin-common-xxxx.jar 和 pyyadmin-common-model.xxxx.jar 找不到
而此时你可能会去将 pyyadmin-common
和pyyadmin-common-model
执行 mvn clean package
,此时会报如下错误:
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 2.208 s
[INFO] Finished at: 2019-11-19T10:45:57+08:00
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal org.springframework.boot:spring-boot-maven-plugin:2.1.7.RELEASE:repackage (repackage) on project pyyadmin-common: Execution repackage of goal org.springframework.boot:spring-boot-maven-plugin:2.1.7.RELEASE:repackage failed: Unable to find main class -> [Help 1]
[ERROR]
[ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch.
[ERROR] Re-run Maven using the -X switch to enable full debug logging.
[ERROR]
[ERROR] For more information about the errors and possible solutions, please read the following articles:
[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/PluginExecutionException
注意!注意!
这里有一个巨坑,我已经义无反顾的跳进去一次了,大家一定不要再往里面跳了:common打包出来的应该是不可执行的jar包
,所以不要在Common的pom中定义spring-boot-maven-plugin
插件,因为这个SpringBoot插件会在Maven的package后进行二次打包,目的为了生成可执行jar包,如果common中定义了这个插件,会报错提示没有找到main函数。
问题就出现在这里:切记,普通模块工程中一定要记得去掉下面 maven编译插件
<build>
<plugins>
<!-- maven 编译插件 -->
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>