Maven - Parent Pom - Наследование ребенка
Я пытаюсь создать родительскую настройку python maven, где мне не нужно объявлять какую-либо информацию о плагинах в моем дочернем помпе, все взято из родительского pom.
Я, по сути, работаю там, где я поместил все мои плагины с такими конфигурациями в родительский pom. Тогда в детском помете я должен объявить плагин неподвижным, но без информации о версии и конфигурации.
Я не хочу вообще объявлять плагин в ребёнке. Таким образом, я могу добавить новые функции (такие как pmd, freebugs и т.д.) Моему родительскому pom, и теперь все мои проекты работают. Как я могу это сделать?
Родительский 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>
Ответы
Ответ 1
Раздел <pluginManagement>
предназначен для настройки сборков проекта, которые наследуются от этого. Тем не менее, это только настраивает плагины, которые на самом деле указаны в элементе plugins в дочерних элементах (так что вы должны явно указать их, как вы указали). Подробнее здесь.
Если вы хотите этого избежать, вы можете поместить эту информацию в раздел <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>
Ответ 2
Вместо использования pluginManagement
попробуйте использовать тег <plugins>
. Он должен быть автоматически унаследован. Вы можете дополнительно переопределить конфигурацию в дочернем помпе. Убедитесь, что mvn help:effective-pom
Ответ 3
Вы не можете избежать именования плагина в дочернем помпе, так как вам следует знать, какой плагин вы используете. Раздел pluginManagement предназначен для определения версий плагина, кроме того, он используется для определения конфигурации по умолчанию.