maven 插件中的执行和配置有什么区别?

Dan*_*lan 10 maven-plugin maven

我找到了这个描述,但它似乎并不全面。可能有人在细节之间有什么区别解释executionsconfigurations在Maven插件?

Ste*_*stl 12

An<execution>导致插件在 maven 构建生命周期期间执行,即在您的构建期间。将<configuration>允许您配置应该如何执行过程中的行为插件。许多 Maven 插件提供有关其配置选项的文档,例如maven-compiler-plugin

您可以<configuration><plugin>级别或<execution>级别上定义s 。前者对所有执行全局有效,后者特定于执行。

全局执行特定配置的示例:

假设您必须使用 Java 1.7 编译您的项目,但您想尽早采用 Java 9 Jigsaw功能并将 a 添加module-info.java到您的项目中。此 Java 文件不会使用源代码级别 1.7 进行编译。您可以做的是定义 maven-compiler-plugin 的两个执行,一个编译除module-info.java源级别 1.7之外的所有内容,另一个只编译module-info.java源级别 1.9:

<plugin>
  <groupId>org.apache.maven.plugins</groupId>
  <artifactId>maven-compiler-plugin</artifactId>
  <version>3.3</version>

  <!-- Global plugin configuration for source and target levels. -->
  <configuration>
    <source>1.7</source>
    <target>1.7</target>
  </configuration>

  <executions>
    <!-- Compile all code except module-info.java with the configured source level -->
    <execution>
      <id>default-compile</id>
      <phase>compile</phase>
      <goals>
        <goal>compile</goal>
      </goals>
      <configuration>
        <excludes>
          <exclude>module-info.java</exclude>
        </excludes>
      </configuration>
    </execution>

    <!-- Compile module-info.java with source level 1.9 -->
    <execution>
      <id>compile-module-info-java</id>
      <phase>compile</phase>
      <goals>
        <goal>compile</goal>
      </goals>
      <configuration>
        <source>1.9</source>
        <target>1.9</target>
        <includes>
          <include>module-info.java</include>
        </includes>
      </configuration>
    </execution>
  </executions>
</plugin>
Run Code Online (Sandbox Code Playgroud)


Adr*_*hum 9

我认为@Stefan 的回答已经很清楚了。如果有帮助,我想更详细一点。

插件下的“执行”声明“什么时候应该做什么”。基本上,execution通常至少包含:phasegoal(我知道您并不总是在配置中看到它,但从概念上讲它们在那里),您可以将其视为:当构建过程到达时phasegoal插件的动作将是执行。

当然,execution一个插件可以有多个s,这样不同/相同的目标可以在不同/相同的阶段运行。

然后来configuration。有时你需要告诉插件关于插件应该如何操作的额外细节,因为插件可能无法猜测默认情况下你想要做什么。 configuration正在做这样的工作。你可以参考插件目标的文档,看看他们接受什么样的配置。

Plugin levelconfiguration将应用于插件的所有executions,同时您也可以configuration在 each 下定义execution,作为execution-specific 配置。插件级别configuration+ 执行级别configurationexecution.