这是父POM中的pluginManagement
,它可以由子项目执行,没有在子项目中定义的插件,为什么??
<build>
<pluginManagement>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<executions>
<execution>
<goals>
<goal>repackage</goal>
</goals>
<configuration>
<classifier>exec</classifier>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</pluginManagement>
</build>
但是如果我从parant POM中删除这个插件,那么子项目就无法执行。
答案 0 :(得分:0)
在您的父POM中,您需要具有以下内容:
<build>
<pluginManagement>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<version>1.5.7.RELEASE</version>
<executions>
<execution>
<goals>
<goal>repackage</goal>
</goals>
<configuration>
<classifier>exec</classifier>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</pluginManagement>
</build>
然后在扩展此POM的项目中,您只需要执行以下操作:
<build>
<pluginManagement>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</pluginManagement>
</build>
这里的想法是你不需要在整个地方复制相同的代码。您可以在一个中心位置定义设置,然后只需扩展它们。
在原始代码中,您没有定义<version/>
。通常,在父POM-s中,您希望控制<dependencies/>
和<plugins/>
的版本。对于依赖项,您还可以定义<exclusions/>
和<scope/>
等内容。
对于插件,您可以集中定义相同的配置,然后,如果出现您希望它稍有不同的情况,您可以在扩展POM中应用必要的更改。
如果在您的父POM中,您还在<plugins/>
部分之外定义了<pluginManagement/>
,那么将为任何扩展此父级的项目调用这些插件。