【发布时间】:2016-11-15 18:20:26
【问题描述】:
我正在尝试为多模块项目设置 Maven 插件管理。我的项目结构看起来像这样
base_project
-- pom.xml
-- projectA
-- pom.xml
-- projectB
-- pom.xml
-- projectC
-- pom.xml
-- project D
-- pom.xml
在基础项目的pom.xml中,我在PluginManagement中定义了一个插件
<pluginManagement>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</pluginManagement>
我希望 projectA 继承 pluginManagement 以便我可以在 projectB 和 projectC 中使用插件。我想要的是,当我构建 base_project 时,插件应该只为 projectB、projectC 和 projectD 而不是为 projectA 运行。 projectA 应该只继承 base_project 的 pluginManagement。我尝试了两种类型的设置,但没有运气
设置 1
使用此设置,当 projectB 或 projectC 构建时 spring-boot-maven-plugin 不会运行
projectA pom.xml 看起来像
<pluginManagement>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</pluginManagement>
而 projectB 和 projectC pom.xml 看起来像
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
设置 2
通过此设置,spring-boot-maven-plugin 也可以针对 projectA 运行。
projectA pom.xml 看起来像
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
而 projectB 和 projectC pom.xml 看起来像
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
【问题讨论】:
-
1-您要执行哪个目标? 2- 看看你孩子 pom 的有效 Pom,它会显示你的 pom 的真实样子 [help:effective-pom]
-
成功了。我们不需要在 projectA 的 pom.xml 中定义插件。我们可以直接在child pom中使用。
标签: maven maven-3 maven-plugin