Maven 插件管理不起作用

Maven 插件管理不起作用,maven,spring-boot,Maven,Spring Boot,这是父POM中的pluginManagement,它可以由子项目执行,因为子项目中没有定义插件,为什么 <build> <pluginManagement> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId&

这是父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>

org.springframework.boot
springbootmaven插件
重新包装
执行官

但是如果我从Parnat POM中删除此插件,那么子项目将无法执行。

在父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>

org.springframework.boot
springbootmaven插件
1.5.7.1发布
重新包装
执行官
然后,在扩展此POM的项目中,您只需执行以下操作:

 <build>
    <pluginManagement>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </pluginManagement>
</build>

org.springframework.boot
springbootmaven插件
这里的想法是,您不需要到处复制相同的代码。您可以在一个中心位置定义设置,然后仅扩展它们

在原始代码中,没有定义
。通常,在父POM-s中,您希望控制
的版本。对于依赖项,还可以定义
之类的内容

对于插件,您可以集中定义相同的配置,然后,如果出现您希望它稍微不同的情况,您可以在扩展POM中应用必要的更改

如果在父POM中,在
部分之外还有
的定义,那么这些插件将被调用用于扩展此父POM的任何项目