Maven - Parent Pom - Наследование детей - PullRequest
18 голосов
/ 28 февраля 2012

Я пытаюсь выполнить настройку родительского pom maven, где мне не нужно объявлять информацию о плагине в моем дочернем pom, все взято из родительского pom.

По сути, он работает там, где яПоместил все мои плагины с там конфигурациями в родительский пом.Затем в дочерних poms я должен объявить плагин еще, но без информации о версии и конфигурации.

Я вообще не хочу объявлять плагин для ребенка.Таким образом, я могу добавлять новые функции (такие как pmd, freebugs и т. Д.) В родительский pom, и теперь все мои проекты работают.Как мне это сделать?

Parent 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>

Ответы [ 3 ]

29 голосов
/ 28 февраля 2012
Раздел

<pluginManagement> предназначен для настройки сборок проекта, которые наследуются от этого. Однако это настраивает только те плагины, которые на самом деле упоминаются в элементе плагинов в дочерних элементах (так что вы должны явно указать их, как вы указали). Подробнее здесь .

Если вы хотите избежать этого, вы можете поместить эту информацию в раздел <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>
14 голосов
/ 28 февраля 2012

Вместо использования pluginManagement, попробуйте использовать только тег <plugins>. Это должно быть автоматически наследуется. При желании вы можете переопределить конфигурацию в дочернем pom. Проверьте это по mvn help:effective-pom

1 голос
/ 28 февраля 2012

Вы не можете не называть плагин в дочернем pom, потому что как maven должен знать, какой плагин вы используете.Раздел pluginManagement предназначен для определения версий плагина, кроме того, он используется для определения конфигурации по умолчанию.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...