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

Maven исключает плагин, определенный в родительском помпе

У меня есть родительский pom с несколькими плагинами. В моем дочернем помпе я хочу исключить один плагин.

Как я могу это сделать?

4b9b3361

Ответ 1

Вы можете объявить все плагины в родительском pom в <pluginManagement>. В каждом ребенке вы можете объявлять плагины, которые используются этим ребенком. Таким образом, вы можете включать или исключать плагины по мере необходимости.

Вы также можете посмотреть эту связанную SO дискуссию.

Ответ 2

У меня было аналогичное требование запуска некоторых плагинов в дочернем, но не родительского ПОМ. я достиг этого, указав <skip>true</skip> в родительском POM.

запись родительского pom ниже

<plugin>
        <groupId>eviware</groupId>
        <artifactId>maven-soapui-plugin</artifactId>
        <version>4.0.0</version>
        <inherited>false</inherited>
        <dependencies>
          <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.8.2</version>
          </dependency>
        </dependencies> 
        <configuration>
          <skip>true</skip>
        </configuration>
      </plugin> 

Запись дочернего проекта ниже

<plugins>
        <plugin>
            <groupId>eviware</groupId>
            <artifactId>maven-soapui-plugin</artifactId>
            <version>4.0.0</version>
            <configuration>
                <settingsFile>site-service-web/src/test/soapui/soapui-settings.xml</settingsFile>
                <projectFile>site-service-web/src/test/soapui/PodifiSite-soapui-project.xml</projectFile>
                <outputFolder>site-service-web/target/surefire-reports</outputFolder>
                <junitReport>true</junitReport>
                <exportwAll>true</exportwAll>
                <printReport>true</printReport>
            </configuration>
        </plugin>
    </plugins>

Ответ 3

Вы можете определить все плагины в родительском pom в разделе pluginManagement

    <pluginManagement>
            <plugins>
                ...
                 <plugin>
                    <artifactId>maven-dependency-plugin</artifactId>
                    <version>2.8</version>
                    <executions>
                        <execution>
                            <id>unpack-dependencies</id>
                            <phase>generate-sources</phase>
                            <goals>
                                <goal>unpack-dependencies</goal>
                            </goals>
                            <configuration>
                                <includeTypes>tar.bz2</includeTypes>
                                <outputDirectory>${project.basedir}/target/dependencies</outputDirectory>
                            </configuration>
                        </execution>
                    </executions>
                </plugin>
              ...
            </plugins>
</pluginManagement>

И после того, как в родительском и дочернем помпах вы можете контролировать фазу выполнения этого плагина

<plugins>
      <plugin>
            <artifactId>maven-dependency-plugin</artifactId>
            <inherited>false</inherited>
            <executions>
                <execution>
                    <id>unpack-dependencies</id>
                    <phase>none</phase>
                </execution>
            </executions>
        </plugin>
  </plugins>

Если вы вставляете это в родительский pom, не забудьте указать опцию <inherited>false</inherited>, ее отключить наследование выполнения в дочернем pom.

Ответ 4

Вы можете использовать profile, активируемое свойством, чтобы определить, используется ли плагин или нет. По умолчанию свойство может быть активировано, и один проект, который вы не хотите использовать, может включать значение свойства, чтобы исключить плагин.