我正在尝试做一个maven父pom设置,在那里我不需要在我的子pom中声明任何插件信息,一切都是从父pom中获取的。
我基本上让它工作,我已经把我所有的插件与这些配置到父pom中。然后在子pom中,我仍然必须声明插件,但没有版本和配置信息。
我根本不想在孩子中声明这个插件。通过这种方式,我可以向我的父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>发布于 2012-02-28 15:26:44
<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>发布于 2012-02-28 15:22:03
尝试只使用标记,而不是使用pluginManagement。应该是自动继承的。您可以选择覆盖子pom中的配置。用mvn help:effective-pom检查一下
发布于 2012-02-28 15:25:53
您无法避免在子pom中命名插件,因为maven如何知道您使用的是哪个插件。pluginManagement部分用于定义插件的版本,此外,它还用于定义默认配置。
https://stackoverflow.com/questions/9477789
复制相似问题