问题描述

采用feign进行消费者与提供者进行开发的时候,往往会把公共的代码部分打成jar包进行引用,可以避免冗余的开发。例如一些config的配置文件、domon文件、以及filter跟工具类,把这些统一叫做common项目。但是当把common打包成jar包,引入其他项目的时候,可以正常引用,但是里面的类却无法引用。原因如下:
image.png
所有的common里面的代码都是存在于BOOF-INF下,这样其他的项目是无法依赖的,并且在METE-INF下定义了启动入口
image.png

解决方式

正常情况下公共部分打包都是采用SpringBoot提供的Maven插件进行打包操作的

  1. <groupId>org.springframework.boot</groupId>
  2. <artifactId>spring-boot-maven-plugin</artifactId>

这种方式,这样默认打包成两个,一个是可执行的jar包,一个是可依赖的后缀名为origin的jar包。只需用classifier要改一下可执行jar包的名字

  1. <plugin>
  2. <groupId>org.springframework.boot</groupId>
  3. <artifactId>spring-boot-maven-plugin</artifactId>
  4. <configuration>
  5. <classifier>exec</classifier>
  6. </configuration>
  7. </plugin>

image.png
可以在target目录下看到成功编译成的可执行jar包以及可依赖-.exec.jar
image.png
此时再查看新发布的包内容,并且成功引入了该依赖。
image.png