maven插件中的执行和配置有什么区别?
但它似乎并不全面。有人能详细解释一下maven插件中的maven插件中的执行和配置有什么区别?,maven,maven-plugin,Maven,Maven Plugin,但它似乎并不全面。有人能详细解释一下maven插件中的执行和配置之间的区别吗?一个导致插件在maven构建生命周期中执行,即在您的构建过程中。允许您配置插件在执行期间的行为。许多Maven插件提供有关其配置选项的文档,例如 您可以在级别或级别上定义s。前者对所有执行全局有效,后者特定于执行 全局执行特定配置示例: 假设您必须使用Java1.7编译项目,但您希望尽早采用Java9特性,并在项目中添加模块info.Java。此Java文件不会使用源代码级别1.7进行编译。您可以定义maven编译器插
执行
和配置
之间的区别吗?一个
导致插件在maven构建生命周期中执行,即在您的构建过程中。
允许您配置插件在执行期间的行为。许多Maven插件提供有关其配置选项的文档,例如
您可以在
级别或
级别上定义
s。前者对所有执行全局有效,后者特定于执行
全局执行特定配置示例:
假设您必须使用Java1.7编译项目,但您希望尽早采用Java9特性,并在项目中添加模块info.Java
。此Java文件不会使用源代码级别1.7进行编译。您可以定义maven编译器插件的两个执行,一个使用源代码级别1.7编译除module info.java
之外的所有内容,另一个仅使用源代码级别1.9编译module info.java
:
<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>
org.apache.maven.plugins
maven编译器插件
3.3
1.7
1.7
默认编译
编译
编译
module-info.java
编译模块信息java
编译
编译
1.9
1.9
module-info.java
一个
块外的
部分通常会影响插件的行为。例如,直接通过CLI执行或绑定到默认阶段的插件将使用这种类型的配置。插件就是这样一个例子
另一方面,
块中的
部分仅适用于该特定执行
与往常一样,更具体的配置可以覆盖常规配置。因此,如果一个常规配置(在执行块之外)说false
,那么执行可能会选择只通过执行true
来覆盖它
通用配置的另一个特点是,它们的参数将被该插件的所有执行所继承。我认为@Stefan的答案已经非常清楚了。我想更详细一点,以防有帮助
插件下的“执行”声明“什么时候应该做什么”。基本上,执行
通常至少包含:阶段
和目标
(我知道您并不总是在配置中看到它,但概念上它们都在那里),您可以将其视为:当构建过程达到阶段
时,插件的目标
操作将被执行
当然,一个插件可以有多个执行
s,这样不同/相同的目标可以在不同/相同的阶段运行
然后进入配置
。有时候,你需要告诉插件更多关于插件应该如何操作的细节,因为插件可能无法猜到默认情况下你想要做什么<代码>配置
正在做这样的工作。你们可以参考插件的目标文档,看看他们接受什么样的配置
插件级配置
将应用于插件的所有执行
,同时您还可以在每个执行
下定义配置
,作为执行
特定配置。插件级配置
+执行级配置
是执行
所接收的“真实”配置你的意思是,除了执行
具有-a配置
?@kevinkrumwied之外,这些元素也处于相同的高度。你可以在没有执行的情况下拥有一个配置。伟人的想法是一样的。:-)当它发生时,令人惊讶:两个人独立地同时写了或多或少相同的东西。我认为,通过综合所有三个答案(在写作时),应该可以给出一个非常一致和清晰的画面,说明这是如何工作的。