【问题标题】:When Maven executes phase or goal or lifecycle?Maven何时执行阶段或目标或生命周期?
【发布时间】:2014-12-25 09:16:21
【问题描述】:

当我阅读有关 Maven 目标和 Stack Overflow 阶段的信息时,我遇到了两个链接,其中一个说:

执行 maven 时可以指定目标或阶段。

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

另一个说:

你不能调用生命周期阶段本身,但你可以调用绑定到生命周期阶段的插件的目标。

——Executing a specific Maven phase

哪一个是对的?还是我没看懂?

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

【问题讨论】:

    标签: maven phase


    【解决方案1】:

    邦比亚博,

    将 Maven 构建生命周期想象成具有连续阶段的美食:

    • 入门(资源)
    • main(编译)
    • 甜点(包)
    • 咖啡(安装)
    • digestif(部署)

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

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

    在这个类比中:

    • pom.xml 文件相当于今天写在黑板上的特价商品
    • 在命令行中调用mvn 相当于将您的订单交给服务员
    • 您可以将多个食物/目标绑定到一个阶段(牛排+肉汁+薯条)

    如果你喜欢房子的默认设置,那么你可以告诉他带上前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
    

    这导致西班牙凉菜汤+科布,然后是牛排+肉汁+薯条。

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

    默认情况下,每个目标都会在某个阶段运行(Cobb 沙拉通常作为开胃菜)。 但是你可以覆盖阶段绑定,就像告诉服务员"I'll have a Cobb salad, but bring it at the same time as the main"

    希望这能阐明目标与阶段背后的直觉。

    【讨论】:

    • 很好的例子!请确认当您执行 maven 目标时,即 mvn [goal] 是否将执行该目标之前的所有阶段?就像如果我执行 mvn deploy:depoly 那么该目标之前的所有阶段(如编译、测试)都会被执行?还是直接部署?
    • 像 deploy:deploy 目标这样调用 mvn 目标只会执行那个单一的动作(“我只想要一杯卡布奇诺”)。像 deploy 这样的校准 mvn 阶段告诉 maven 执行所有目标,包括它(“我要吃 3 道菜”)
    【解决方案2】:

    当您调用单个插件时,您需要调用该插件的目标。喜欢

    mvn dependency:tree
    

    在这种情况下,您正在调用依赖插件的目标树

    另一方面,您可以通过简单地调用 maven 的一个阶段

    mvn test
    

    在这种情况下,您调用的不是插件而是阶段。请注意,插件目标也可以绑定到特定阶段。不同之处在于您是调用完整阶段(以及隐含的所有先前阶段)还是仅调用单个插件的单个目标

    Here 你可以找到默认生命周期的所有阶段(可以修改,但我认为你现在不需要知道),所以你可以看到,install 是一个阶段

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-12-23
      • 1970-01-01
      • 2016-02-18
      • 2014-12-23
      • 2013-05-05
      • 2016-08-05
      • 2020-03-25
      相关资源
      最近更新 更多