最近在项目中配置了maven plugin,然后depoly到远端仓库之后发现,依赖这个Jar包的项目不能获取到被依赖包中的类,为什么会出现这种情况呢?其实很简单,如果将maven的插件放到工程中进行打包,它会将这个工程所依赖的Jar都打到这个包中,并放到BOOT-INF文件夹下面,这种方式打包的目的是为了让工程作为独立运行的程序部署到服务器上,而并非是给其他包提供依赖用的,如果你是想让它只是作为被依赖包上传到远端仓库让其他服务调用,那么请你把被依赖工程pom文件中的maven plugin代码删掉,然后depoly到远端仓库,最后刷新你的maven发现BOOT-INF文件夹消失,此时就可以正常调用被依赖包中的相关类了。
网上很多文章说在被依赖工程的maven plugin中添加<configuration><skip>true</skip></configuration>,其实这种写法和在代码中直接去掉效果是一样的,这种做法其实就是知其然而不知其所以然的表现:
总结:1、如果需要将工程作为独立程序单独部署到服务器上运行,请不要在工程中依赖maven插件。2、如果将工程作为能力提供方给其他服务调用,此时可以在工程中依赖maven插件,然后depoly到远端仓库就可以了。