2017-09-14 91 views
0

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

在你的父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中,您还在<pluginManagement/>部分之外定义了<plugins/>,那么对于扩展此父项的任何项目都将调用这些插件。