默认情况下,Maven 将创建一个执行 ID,根据不同的情况应用以下模式:
- 执行 ID 设置为:对于从命令行执行的插件:目标
default-cli
- 执行 ID 设置为:对于插件:作为特定打包定义的绑定的一部分执行的目标
default-<goal_name>
- 执行 ID 设置为:对于插件:目标执行,作为 POM 的一部分,未指定任何 id。
default
例如,如果您从命令行执行 Maven Dependency 插件,使用经典目标,您会注意到执行 id:mvn dependency:tree
default-cli
[INFO] --- maven-dependency-plugin:2.1:tree (default-cli) @ project ---
例如,如果您在编译阶段查看任何 Maven 构建版本的输出以及 Maven 编译器插件的默认执行,您会注意到 Maven 编译器插件的执行 ID 和目标。default-compile
default-testCompile
compile
testCompile
相同的模式应用于 Maven 作为为给定打包定义的绑定的一部分执行的所有默认插件/目标。执行 ID 始终位于相关插件和目标名称之后的弯曲括号之间。
例如,基本 Maven 构建的摘录:
[INFO] --- maven-clean-plugin:2.5:clean (default-clean)
[INFO] --- maven-resources-plugin:2.6:resources (default-resources)
[INFO] --- maven-compiler-plugin:2.5.1:compile (default-compile)
[INFO] --- maven-resources-plugin:2.6:testResources (default-testResources)
[INFO] --- maven-compiler-plugin:2.5.1:testCompile (default-testCompile)
[INFO] --- maven-surefire-plugin:2.19:test (default-test)
显示执行 ID(上面代码段中的最后一个标记,括号之间)如何始终遵循此模式。
最后,如果您在没有指定id的情况下配置POM中任何插件的执行,您会注意到Maven应用的id:default
[INFO] --- exec-maven-plugin:1.1:java (default) @ project ---
来自 Maven 官方文档:
命令行执行 ID
直接从命令行调用的每个 mojo 都将分配有一个 default-cli 的执行 ID,这将允许使用此默认执行 Id 从 POM 配置该执行
默认绑定执行 ID
通过指定 POM 打包的默认生命周期映射绑定到构建生命周期的每个 mojo 都将为其分配一个默认目标名称的执行 ID
默认插件执行 ID
executionId 的默认值 ( 在 POM 模型中字面上设置为默认值 - 旨在提供一些此功能。不幸的是,该解决方案从未经过测试,以确保它与上述用例一起使用。它们在测试过程中从裂缝中掉了下来。现在,随着 Maven 2.2.0(以及更高版本的 Maven 3.0)的发布,这些用例终于可以得到解决。
最后但并非最不重要的一点是,关于执行ID,自Maven 3.3.1以来,您甚至可以使用new运算符从命令行指向POM的特定执行ID@executionId