pluginManagement不起作用

时间:2017-09-14 05:31:55

标签: maven spring-boot

这是父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中删除这个插件,那么子项目就无法执行。

1 个答案:

答案 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/>,那么将为任何扩展此父级的项目调用这些插件。