问题描述
采用feign进行消费者与提供者进行开发的时候,往往会把公共的代码部分打成jar包进行引用,可以避免冗余的开发。例如一些config的配置文件、domon文件、以及filter跟工具类,把这些统一叫做common项目。但是当把common打包成jar包,引入其他项目的时候,可以正常引用,但是里面的类却无法引用。原因如下:
所有的common里面的代码都是存在于BOOF-INF下,这样其他的项目是无法依赖的,并且在METE-INF下定义了启动入口
解决方式
正常情况下公共部分打包都是采用SpringBoot提供的Maven插件进行打包操作的
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
这种方式,这样默认打包成两个,一个是可执行的jar包,一个是可依赖的后缀名为origin的jar包。只需用classifier要改一下可执行jar包的名字
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<classifier>exec</classifier>
</configuration>
</plugin>
可以在target目录下看到成功编译成的可执行jar
包以及可依赖-.exec.jar
此时再查看新发布的包内容,并且成功引入了该依赖。