Плагин Maven, определенный в Parent Pom, иногда не запускается в Child без объявления - PullRequest
0 голосов
/ 30 апреля 2020

В моем родительском POM я определил плагин зависимостей с фазой prepare-package внутри <pluginManagement><plugins>.

<plugin>
    <artifactId>maven-resources-plugin</artifactId>
    <version>${version.plugin.resources}</version>
</plugin>
<plugin>
    <artifactId>maven-dependency-plugin</artifactId>
    <version>${version.plugin.dependency}</version>
    <executions>
        <execution>
            <id>copy-dependencies</id>
            <phase>prepare-package</phase>
            <goals>
                <goal>copy-dependencies</goal>
            </goals>
            <configuration>
            <outputDirectory>${classpathDir}</outputDirectory>
            <includeScope>runtime</includeScope>
            <excludeClassifiers>${dependencyClassifiers}</excludeClassifiers>
            </configuration>
        </execution>
    </executions>
</plugin>

В моем дочернем POM я не указал ни один плагин для зависимостей. Это не было выполнено. Я должен поместить это в <plugins>, чтобы заставить его срабатывать:

<plugin>
    <artifactId>maven-dependency-plugin</artifactId>
</plugin>

Цели Maven, которые я использую: clean install.

Мой вопрос, почему у меня есть явно указать maven-dependency-plugin снова в моем дочернем POM?

  1. Другие плагины, такие как maven-jar-plugin, maven-resource-plugin, maven-compiler-plugin, работают, хотя я не объявлял их повторно в своем POM , Почему он несовместим?
  2. Фаза зависимости была настроена как prepare-package, то есть до package фазы в Maven жизненный цикл , поэтому я предполагаю, что она должна была быть "выполнена в следующем порядке" дается до точки указанной ". Но это не так, почему?

Заранее спасибо всем, кто сможет помочь с моими запросами! :)

1 Ответ

1 голос
/ 30 апреля 2020

Раздел <pluginManagement> используется для обмена конфигурациями плагинов между этим проектом и дочерними проектами. Плагины выполняются только если они определены в <plugins>. См. этот ответ для получения дополнительной информации.

Однако некоторые плагины не нужно определять в <plugins>. Это относится к плагинам встроенной привязки жизненного цикла , например maven-jar-plugin, maven-resource-plugin и maven-compiler-plugin.

...