maven install的时候报Unable to find main class
目录
- 问题描述
- 解决办法
- 解决方案一:添加一个主函数
- 解决方案二:将不是web工程的设置跳过
- 解决方案三:打包插件的作用本质上就是将当前项目所依赖的jar打包到一块,这样jar包就可以运行了,我们完全可以把parent的pom.xml的build打包插件给去掉,哪里需要打包就在哪个子项目的pom.xml上添加。
问题描述
common包由于不是web项目所以我寻思不用放main主函数方法。然后删除掉之后就打包异常了。
正常我们打出来的jar包可以通过java-jar来运行jar包的,运行jar包的时候实际上就是去访问程序当中的主函数方法,所以不管是不是web工程,都不可以没有主函数。
打包的时候我是对父工程进行的clean和install。项目使用了聚合工程,所以对父工程打包就相当于执行整个项目的。
解决办法
需要注意的:父工程
<packaging>pom</packaging>
一定要设置为pom
解决方案一:添加一个主函数
虽然他不是web工程,但是我们依旧可以在包下新建一个类,然后创建一个主函数方法。这样可以避免打包异常。
假如项目当中存在多个主函数,那他还会打包成功吗?我们来做一下试验:
事实证明他会不知道使用哪个主函数而报异常
解决方法:
解决方案二:将不是web工程的设置跳过
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<skip>true</skip>
</configuration>
</plugin>
</plugins>
</build>
解决方案三:打包插件的作用本质上就是将当前项目所依赖的jar打包到一块,这样jar包就可以运行了,我们完全可以把parent的pom.xml的build打包插件给去掉,哪里需要打包就在哪个子项目的pom.xml上添加。
可能会有人对这有疑问,web项目引用了common工程,那common工程都没有打包插件,web工程会受影响吗,答案是不会的,关于这一点我已经验证过了。如下将web工程的jar包解压后,会发现尽管common没有主函数,他依然将common打成了jar包,封装到了自己jar包下,而且项目还可以正常运行。