maven-shade-plugin插件有個配置屬性:createDependencyReducedPom,默認值為true.
當這個屬性為true的時候,如果我們使用maven-shade-plugin來打包項目,那么便會在項目根目錄下生成一個dependency-reduced-pom.xml
文件,這個被刪減的pom文件會移除已經打包進jar包中的依賴。
怎么理解呢,也就是說,假如我的一個工程A依賴了spring-boot-starter-tomcat,那么這個依賴(即spring-boot-starter-tomcat)中的.class文件會被打包進生成的A.jar包中,
<artifactId>spring-boot-starter-tomcat</artifactId>
<groupId>org.springframework.boot</groupId>
而在生成的dependency-reduced-pom.xml
文件中,這個依賴將被exclusion掉。
那么這個dependency-reduced-pom.xml
有什么用呢?
我們如果在另一個工程B中引用了A工程對應的A.jar,而且B也依賴了spring-boot-starter-tomcat,那么我們在B工程中就不需要再依賴spring-boot-starter-tomcat了,這樣可以避免重復引用。