Maven:如何在父POM配置插件以让所有子模块执行统一任务?
Maven多模块项目插件配置复用方案
完全可行,这正是Maven父POM用来统一配置的核心场景之一,推荐把插件配置放在my-modules的POM里,理由如下:
- 从项目结构来看,my-modules是所有子模块(module1、module2等)的直接父POM,把插件配置放在这里,只会作用于它的子模块,不会影响根POM下的其他无关模块(如果有的话),更符合模块化的边界。
- 配置方式很简单:在my-modules的POM的
<build><plugins>节点下定义插件的完整配置,其中需要用到模块名称、版本的地方,直接用Maven内置变量替代,比如模块名称用${project.artifactId},版本用${project.version},子模块在继承父POM后会自动替换为自身的信息。
举个配置示例:
<build> <plugins> <plugin> <groupId>你的插件GroupId</groupId> <artifactId>你的插件ArtifactId</artifactId> <version>插件版本</version> <executions> <execution> <id>统一执行的任务ID</id> <goals> <goal>插件目标</goal> </goals> <configuration> <!-- 用内置变量替代模块专属信息 --> <moduleName>${project.artifactId}</moduleName> <moduleVersion>${project.version}</moduleVersion> <!-- 其他通用配置 --> </configuration> </execution> </executions> </plugin> </plugins> </build>
如果个别子模块不需要执行这个插件任务,可以在该子模块的POM里添加如下配置来跳过继承:
<build> <plugins> <plugin> <groupId>你的插件GroupId</groupId> <artifactId>你的插件ArtifactId</artifactId> <inherited>false</inherited> </plugin> </plugins> </build>
当然也可以把配置放在根POM里,但这样会让根POM下所有继承它的模块(包括my-modules本身)都加载这个插件,除非你明确在其他模块里排除,不如放在my-modules里更精准。
内容的提问来源于stack exchange,提问作者Mandroid
相关产品推荐
相关产品推荐

