1.plugins和pluginManagement的區(qū)別概述
plugins
和 pluginManagement
的區(qū)別,和我們前面研究過的 dependencies
和 dependencyManagement
的區(qū)別是非常類似的窟她。plugins
下的 plugin
是真實使用的陈症,而 pluginManagement
下的 plugins
下的 plugin
則僅僅是一種聲明,子項目中可以對 pluginManagement
下的 plugin
進行信息的選擇震糖、繼承录肯、覆蓋等。
2.pluginManagement使用實戰(zhàn)
假如存在兩個項目吊说,項目A為項目B的父項目论咏,其關系通過pom文件的關系確定。項目A的父pom文件片段如下:
<pluginManagement>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-source-plugin</artifactId>
<version>2.1</version>
<configuration>
<attach>true</attach>
</configuration>
<executions>
<execution>
<phase>compile</phase>
<goals>
<goal>jar</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</pluginManagement>
如果項目B也想使用該plugin配置颁井,則在項目B的子pom文件中只需要如下配置:
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-source-plugin</artifactId>
</plugin>
</plugins>
我們可以看到厅贪,子pom文件中,省去了版本雅宾、配置細節(jié)等信息养涮,只需要指定groupId和artifactId,其他信息均從父pom文件繼承。當然,如果子pom文件想定制自己的特定內(nèi)容劈彪,可以另行設置绪杏,并會覆蓋從父pom文件繼承到的內(nèi)容。
需要注意的是,dependencies
和 dependencyManagement
均是 project
下的直接子元素,但是 plugins
和 pluginManagement
卻是 project
下 build
的直接子元素。