IDEA中多模块打包找不到其它模块解决
今天将一个单模块项目拆分为多模块微服务项目,在idea工具中没有报错,但打包就提示找不到其它包的类。
MAIN未找到
这是你在子项目中加入了
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
spring boot中加入 这个插件他会默认的去寻找主类,这样就会导致打包不过,在网上百度了很久,问题还是没解决,最后我是在他们的子项目中加了一个main
还可以使用其它打包工具,如org.apache.maven.plugins
打包子项目失败 和错误信息程序未找到
在打包多Maven多模块项目时要注意一些小细节,先打包root项目在打包子项目,先进行子项目的打包可能会出现一些依赖问题
![](https://img.haomeiwen.com/i12185313/db03bdd3958a0f44.png)
先clean在install,如果打包子项目还是报错,那么在你 的通用类加入
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<classifier>exec</classifier>
</configuration>
</plugin>
</plugins>
</build>
原因分析: spring-boot-maven-plugin打包出来的jar是不可依赖的
如现在整合后的maven项目有一个parent工程,打包类型为pom,下面多个spring-boot工程作为它的module,分别为子模块和moduleA,moduleB。假如moduleA依赖于子模块。如果你在子模块中使用了spring-boot-maven-plugin的默认配置build,或者在parent工程中使用spring-boot-maven-plugin的默认配置build。那么在clean package的时候会发现moduleA找不到子模块中的类。原因就是默认打包出来的jar是不可依赖的。
解决方案:
官方告诉我们,你如果不想移代码,好吧,我这样来给你解决,给你打两个jar包,一个用来直接执行,一个用来依赖。于是,你需要指定一个属性classifier,这个属性为可执行jar包的名字后缀。比如我设置<classifier>exec</classifier>,原项目名为Vehicle-business。那么会得到两个jar:Vehicle-business.jar和Vehicle-bussiness-exec.jar