1.问题背景描述
一个多模块微服务项目,我所打包的模块只因引用了自己写的公共包common。运行,编译都正常,maven的clean也正常,但是package和install都报一个common模块中实体未找到,但明明已经引用并加了包扫描。尝试诸多方法后rebuild可以打包,但是运行jar包还是报同样的错。
2.解决
在尝试配置了idea自身的运行配置和删除.imi 文件,执行命令:maven idea:idea重新生成等方法后还是无效;后来看到一个说是自己的jar包maven引用不生效。需要在被引用的包pom文件加上exec。
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<classifier>exec</classifier>
</configuration>
</plugin>
</plugins>
</build>
如上所示
原因是springboot默认打出的包是无法被依赖的,可以对spring-boot-maven-plugin插件配置classifier属性,生成两个jar包,一个是可执行的jar,一个是可以被依赖的jar。
通常情况下,.jar
文件是 Java 程序的打包文件,其中包含了程序的代码、资源文件以及依赖的库文件。在这两个文件名中,xxx-exec.jar
表明这个 JAR 文件是用来执行程序的,是一个可执行 JAR 文件,其中包含了 main
方法,可以通过命令行直接运行。而 XXX.jar
则是程序的库文件,供其他程序调用或者在项目中引用。