但行好事
莫论前程❤

Maven-shade插件之dependency-reduced-pom.xml

​ 今天给maven项目打jar包,发现在pom.xml文件的同路径下,突然生出了一个dependency-reduced-pom.xml,也不知道这个文件是干什么的,每次git的时候都会提示出它,不知道该不该忽略。

经过谷歌之后发现该文件可以忽略.其他忽略文件请见: git忽略文件模板 中的 #Maven template

产生原因

该文件产生的原因是我在pom.xml中,使用了maven-shade-plugin插件打jar包,没有指定createDependencyReducedPom才导致了它的出现。

maven-shade-plugin插件有个配置属性:createDependencyReducedPom,默认值为true.

​ 注意这个属性,如果你用这个插件来deploy,或者发布到中央仓库. 这个属性会缩减你的pom文件,会把你依赖的<dependency>干掉。
正确的做法是把这个值改成false,如果为true,则会生成一个删减的pom文件:

dependency-reduced-pom.xml 。这个被删减的pom文件会移除已经打包进jar包中的依赖。

所以应该将该值改为false:添加上以下代码可以避免生成此文件:

<configuration>
      <createDependencyReducedPom>false</createDependencyReducedPom>
</configuration>

存在的意义:

​ 也就是说,假如我的一个工程A依赖了spring-boot-starter-tomcat,那么这个依赖(即spring-boot-starter-tomcat)中的.class文件会被打包进生成的A.jar包中, 而在生成的dependency-reduced-pom.xml文件中,这个依赖将被exclusion掉。

那么这个dependency-reduced-pom.xml有什么用呢?
我们如果在另一个工程B中引用了A工程对应的A.jar,而且B也依赖了spring-boot-starter-tomcat,那么我们在B工程中就不需要再依赖spring-boot-starter-tomcat了,这样可以避免重复引用。

maven-shade-plugin的整体配置如下:

<plugin>
   <groupId>org.apache.maven.plugins</groupId>
   <artifactId>maven-shade-plugin</artifactId>
   <version>2.4.3</version>
    <!-- 去掉dependency-reduced-pom.xml -->
   <configuration>
      <createDependencyReducedPom>false</createDependencyReducedPom>
   </configuration>
   <executions>
      <execution>
         <phase>package</phase>
         <goals>
            <goal>shade</goal>
         </goals>
         <configuration>
            <transformers>
               <transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
                  <mainClass>Main</mainClass>
               </transformer>
            </transformers>
         </configuration>
      </execution>
   </executions>
</plugin>
赞(0) 打赏
未经允许不得转载:刘鹏博客 » Maven-shade插件之dependency-reduced-pom.xml
分享到: 更多 (0)

评论 抢沙发

评论前必须登录!

 

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏