Подтвердить что ты не робот

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>
4b9b3361

Ответ 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 предназначен для определения версий плагина, кроме того, он используется для определения конфигурации по умолчанию.