【问题标题】:Multiple configuration tags for maven pluginsMaven插件的多个配置标签
【发布时间】:2019-05-10 13:27:43
【问题描述】:

根据maven POM reference,我们可以为maven插件定义多个<configuration>标签。

        <plugin>
            <groupId/>
            <artifactId/>
            <version/>
            <extensions/>
            <executions>
                <execution>
                <id/>
                <phase/>
                <goals/>
                <inherited/>
                <configuration/>

            </execution>

        </executions>
        <dependencies>
            ...
        </dependencies>
        <goals/>
        <inherited/>
        <configuration/>
    </plugin>

如果您可以看到一个&lt;configuration&gt;&lt;execution&gt; 标记内部,而另一个在外部。让我们举个例子更清楚地看到它:

例子:

<plugin>
    <artifactId>maven-surefire-plugin</artifactId>
    <version>2.18.1</version>
    <executions>
      <execution>
        <id>default-test</id>
        <phase>test</phase>
        <goals>
          <goal>test</goal>
        </goals>
        <configuration>
          <includes>
            <include>**/*Tests.java</include>
            <include>**/*Test.java</include>
          </includes>
          <excludes>
            <exclude>**/Abstract*.java</exclude>
          </excludes>
        </configuration>
      </execution>
    </executions>

    <configuration>
      <includes>
        <include>**/*Tests.java</include>
        <include>**/*Test.java</include>
      </includes>
      <excludes>
        <exclude>**/Abstract*.java</exclude>
      </excludes>
    </configuration>

  </plugin>

考虑以下万无一失的插件。它有 2 个&lt;configuration&gt;。一个在&lt;execution&gt; 内部,另一个在外部。

这两者有什么区别?请笼统地解释,而不仅仅是为了确保插件示例。外部是否类似于全局配置?

【问题讨论】:

  • 一个是全局配置,另一个是执行特定配置
  • @spi 全局配置何时运行?如果我只提到mvn some_plugin:goal 会发生全局配置还是执行一个?
  • 它适用于没有其他任何东西覆盖它的情况。当您调用插件的目标时(如在您的示例中),它不引用任何特定的执行,因此它将使用全局配置(但请记住,某些插件确实声明了默认执行并将其绑定到某个阶段- 在调用阶段而不是目标时可能会干扰配置解析)。
  • @spi 请添加答案,因为您的评论有效地回答了问题。
  • @JFMeier 我通常不发布答案,因为我不在乎声誉......

标签: java maven maven-3


【解决方案1】:

一个是全局配置,一个是执行特定配置

只要没有其他东西覆盖它,全局就会应用。当您调用插件的目标时(如您的示例中),它不引用任何特定的执行,因此它将使用全局配置

但请记住,某些插件确实声明了默认执行并将其绑定到某个阶段 - 这可能会在调用阶段而不是目标时干扰配置解析。

【讨论】:

  • 谢谢。它可以帮助读者看到问题确实得到了回答,并且“真实”的答案比评论更明显。
猜你喜欢
  • 2013-07-06
  • 2011-12-21
  • 1970-01-01
  • 2012-05-02
  • 2016-08-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多