gpt4 book ai didi

maven - Maven何时执行阶段、目标或生命周期?

转载 作者:行者123 更新时间:2023-12-02 03:33:57 24 4
gpt4 key购买 nike

当我在 Stack Overflow 上阅读有关 Maven 目标和阶段的内容时,我发现了两个链接,其中一个链接写着:

when you execute maven you can specify a goal or a phase.

What is the difference/relation between maven goals and phases?

另一个说:

You can't call the life-cycle-phase itself but you can call the goals of the plugins which are bound to the life-cycle-phases.

Executing a specific Maven phase

哪一个是正确的?还是我没看懂?

也可以给我一些简单的例子,Maven 执行生命周期/阶段/目标。而且 Maven 也知道它必须运行阶段或目标?例如。当我说mvn install时,它是install阶段还是目标?

最佳答案

邦比亚博,

将 Maven 构建生命周期视为具有连续阶段的一顿大餐:

  • 入门(资源)
  • 主要(编译)
  • 甜点(套餐)
  • 咖啡(安装)
  • digestif(部署)

目标是在该阶段提供的实际食物。

  • 开胃菜:西类牙凉菜汤
  • 主菜:牛排;肉汁;薯条
  • 甜点:提拉米苏
  • 咖啡:卡布奇诺

在这个比喻中:

  • pom.xml 文件相当于今天写在黑板上的菜单
  • 在命令行调用mvn相当于向服务员下订单
  • 您可以将不止一项食物/目标绑定(bind)到一个阶段(牛排+肉汁+薯条)

如果您喜欢餐厅的默认菜品,那么您可以直接点固定菜单中的前 N ​​道菜:

"I'll take the 2 course meal"
$ mvn compile

您将获得一切,包括主菜(即西类牙凉菜汤,然后是牛排+肉汁+薯条)。

调用单个目标相当于点菜:

"I'll take a Cobb salad plus the 2 course meal"
$ mvn javadoc:javadoc compile

如果您希望该目标永久添加到菜单中,请将其添加到 pom 文件中。这让我们回到调用:

$ mvn compile

结果是西类牙凉菜汤+科布,然后是牛排+肉汁+薯条。

关于将目标绑定(bind)到阶段的最后一点。

默认情况下,每个目标都会在某个阶段运行(科布沙拉通常作为开胃菜)。但你可以覆盖阶段绑定(bind),这就像告诉服务员“我要一份科布沙拉,但与主菜同时上来”

希望这能够澄清目标与阶段背后的直觉。

关于maven - Maven何时执行阶段、目标或生命周期?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26634230/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com