首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >maven插件执行的隐式ID是什么?

maven插件执行的隐式ID是什么?
EN

Stack Overflow用户
提问于 2016-01-04 11:46:23
回答 1查看 4.7K关注 0票数 14

要禁用父POM继承的插件执行,可以按以下方式重写它:

代码语言:javascript
运行
复制
<execution>
    <id>TheNameOfTheRelevantExecution</id>
    <phase/>
</execution>

现在,如果父POM没有定义显式执行ID,怎么办?这个答案说:“如果您不指定执行的id,那么Maven将隐式地执行它(以一种您不直观地期望的方式)。”那么Maven是如何生成执行ID的呢?链接相关Maven源代码的额外积分。

注意:,我不是在寻找禁用插件执行的替代方法。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-01-04 20:17:09

默认情况下,Maven将根据不同的情况创建一个应用以下模式的执行id:

  • 执行id设置为:default-cli for plugin:从命令行执行的目标
  • 执行id设置为:default-<goal_name> for plugin:目标作为特定打包定义的绑定的一部分执行
  • 执行id设置为:default用于插件:目标执行作为POM的一部分,它没有指定任何id。

例如,如果您从命令行执行Maven依赖插件,并且具有典型的mvn dependency:tree目标,您将注意到default-cli执行id:

代码语言:javascript
运行
复制
[INFO] --- maven-dependency-plugin:2.1:tree (default-cli) @ project ---

例如,如果您查看任何Maven构建的输出以及编译阶段Maven编译器插件的默认执行,您将注意到default-compiledefault-testCompile作为Maven Compiler插件的compiletestCompile目标的执行ids。

同样的模式应用于Maven执行的所有默认插件/目标,作为为给定打包定义的绑定的一部分。执行ids总是位于相关插件和目标名称之后的曲线括号之间。

例如,基本Maven构建的摘录:

代码语言:javascript
运行
复制
[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)  

显示执行ids (上面代码段中的最后一个令牌,括号之间)是如何始终遵循此模式的。

最后,如果在不指定id的情况下配置POM中任何插件的执行,您将注意到Maven应用的default id:

代码语言:javascript
运行
复制
[INFO] --- exec-maven-plugin:1.1:java (default) @ project ---

来自官方Maven文档

命令行执行id

每个直接从命令行调用的mojo都将有一个默认-cli的执行Id分配给它,这将允许通过使用这个默认的执行Id从POM配置该执行。

默认绑定执行id

通过指定POM打包的默认生命周期映射绑定到构建生命周期的每个mojo都将有一个默认目标名的执行Id分配给它。

默认插件执行id

executionId的默认值--实际上是在POM模型中设置为默认值--是为了提供其中的一些功能。不幸的是,这个解决方案从未经过测试以确保它能与上面的用例一起工作;它们在测试过程中就会崩溃。现在,通过发布Maven 2.2.0 (以及更高版本的Maven 3.0),这些用例可以最终得到解决。

最后但并非最不重要的是,关于执行id,因为Maven 3.3.1甚至可以使用新的@executionId运算符指向POM 从命令行的特定执行id。

票数 22
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34590452

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档