我正在尝试创建一个maven父pom设置,我不必在我的孩子pom中声明任何插件信息,所有内容都来自父pom。
我基本上把它放在我将所有插件都配置到父pom中的地方。然后在子poms我必须声明插件仍然,但没有版本和配置信息。
我根本不想在孩子中声明插件。通过这种方式,我可以向我的父pom添加新功能(例如pmd,freebugs等),现在我的所有项目都可以使用它们。我怎么能做到这一点?
父Pom
<pluginManagement>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-scm-plugin</artifactId>
<version>1.0</version>
<inherited>true</inherited>
<configuration>
<providerImplementations>
<cvs>cvs_native</cvs>
</providerImplementations>
<systemProperties>
<property>
<name>maven.scm.perforce.clientspec.name</name>
<value>${perforceClientSpec}</value>
</property>
</systemProperties>
</configuration>
</plugin>
Child Pom仍然需要这个,但如果我可以避免,我不想这样做:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-scm-plugin</artifactId>
</plugin>
答案 0 :(得分:29)
<pluginManagement>
部分旨在配置从此继承的项目构建。但是,这只配置子项中插件元素中实际引用的插件(因此您必须明确指定它们,如您所示)。查看更多here。
如果您想避免这种情况,可以将此信息放入<build>
部分,如下所示:
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-scm-plugin</artifactId>
<version>1.0</version>
<configuration>
<...>
</configuration>
<executions>
<...>
</executions>
</plugin>
</plugins>
</build>
答案 1 :(得分:14)
请尝试仅使用<plugins>
标记,而不是使用pluginManagement
。它应该是自动继承的。您可以选择覆盖子pom中的配置。按mvn help:effective-pom
答案 2 :(得分:1)
您无法避免在子pom中命名插件,因此maven应该知道您使用的是哪个插件。 pluginManagement部分用于定义插件的版本,此外它还用于定义默认配置。