maven-shade-plugin默认绑定不生效,手动绑定正常的问题咨询
Maven Shade插件默认绑定失效的疑问
根据maven-shade-plugin文档说明,shade目标默认绑定到package生命周期阶段,理应和jar:jar这类默认绑定package的插件同步执行。按照Maven的POM规范,pluginManagement仅用于配置供子POM或当前POM引用的插件参数。
于是我们在父POM的pluginManagement中配置maven-shade-plugin的基础参数:
<groupId>foo</group> <artifactId>parent-code</artifactId> <version>1.2.3</version> <packaging>pom</packaging> <build> <pluginManagement> <plugins> ... 其他插件如maven-{resources,compiler,jar}-plugin ... <plugin> <artifactId>maven-shade-plugin</artifactId> <version>3.6.0</version> <configuration> ... 配置内容 ... </configuration> </plugin> </plugins> </pluginManagement> </build>
接着在子POM中引用该插件并调整配置:
<groupId>foo</group> <artifactId>child-code</artifactId> <version>1.2.3</version> <packaging>jar</packaging> <parent> <groupId>foo</groupId> <artifactId>parent-code</artifactId> <version>1.2.3</version> <!-- Maven 4中可省略 --> </parent> <build> <plugins> <plugin> <artifactId>maven-shade-plugin</artifactId> <configuration> ... 自定义调整 ... </configuration> </plugin> </plugins> </build>
但执行mvn package时,shade插件完全没有运行,即使加上-X参数也看不到任何相关日志。不过如果手动给插件添加执行绑定,指定package阶段和shade目标:
<plugin> <artifactId>maven-shade-plugin</artifactId> <!-- group、version等元素和之前完全一致 --> <executions> <!-- 新增的执行配置块 --> <execution> <phase>package</phase> <goals> <goal>shade</goal> </goals> </execution> </executions> <configuration> ... 和之前一致的配置 ... </configuration> </plugin>
插件就能正常工作,而且这个绑定配置无论是放在父POM的pluginManagement里,还是子POM的plugins里都有效。
我对默认绑定的理解哪里错了?一开始怀疑父POM用pom打包没有package阶段,但父POM里配置的其他默认绑定compile、package阶段的插件都能正常继承执行,不需要手动绑定。
内容的提问来源于stack exchange,提问作者Ti Strga
相关产品推荐
相关产品推荐

