【问题标题】:How to invoke maven default lifecycle如何调用maven默认生命周期
【发布时间】:2012-07-19 07:48:57
【问题描述】:

如果我打电话

mvn clean install

maven 知道 clean 是一个生命周期,而 install 是默认生命周期的一个阶段

如果我打电话

mvn deploy

maven 将按顺序执行默认生命周期的所有阶段。

有没有办法通过提供生命周期名称来调用默认生命周期(而不是执行生命周期的最后一个阶段)?

编辑:所以问题是:是否有命令

mvn lifecyclename

开始执行默认生命周期?

【问题讨论】:

    标签: maven lifecycle


    【解决方案1】:

    没有基于生命周期名称运行生命周期的命令。所以你不能执行mvn Default 并期望它运行到Default:deploy。您将不得不提及一个循环任务,例如testpackageclean,并且拥有该任务的生命周期将被激活。

    将生命周期作为参数是没有意义的。这会令人困惑。例如运行mvn clean 是清洁生命周期还是清洁任务?

    或者,输入mvn clean 会更冗长,将运行清洁生命周期; mvn clean:clean 将运行 Clean 生命周期,直到 clean 任务。


    Maven 有三个生命周期。执行任何生命周期的任务(例如 task_N)将导致执行整个生命周期,直到该任务(task_N)。三个生命周期是 CleanDefaultSite

    更多详情请看这里Introduction to Maven Life-cycles and task order

    当你执行时你会看到,mvn test 这些是按顺序执行的事情

    验证 > 初始化 > generate-sources > process-sources > generate-resources > process-resources > compile > process-classes > post-process > generate-test-sources > process-test-sources > generate-test-resources > 流程测试资源 > 测试编译 > 流程测试类 > 测试

    您不能跳过任何默认任务。您可以挂钩在任务期间执行的插件。

    【讨论】:

    • 如果多个阶段具有相同名称的阶段会发生什么?
    【解决方案2】:

    似乎有误会。进一步阅读可以澄清这一点

    mvn clean
    

    不调用整个清洁生命周期。事实上,清洁生命周期中有一个清洁阶段。并且命令执行的是这个阶段而不是生命周期。

    【讨论】:

      【解决方案3】:

      据我所知,您无法执行孤立的生命周期阶段。

      但是你可以执行一个独立的插件目标。

      mvn deploy:deploy
      

      这不会触发与deploy 阶段相关的任何插件执行。但是您始终可以在命令行中添加更多插件执行。所以我最好使用跳过所有插件执行的配置文件。

      如果你想执行一个绑定到deploy 阶段的myplugin:mygoal 那么

      mvn myplugin:mygoal deploy:deploy
      

      但是执行的配置必须在cli中。

      但是你最好跳过你不想要的插件执行。只在命令行中跳过testintegration-test。但是您可以使用配置文件来实现这一点,该配置文件将默认周期的配置设置为跳过。

      <profiles>
        <profile>
          <id>skip</id>
            ...
               <plugin>
                  <groupId>org.apache.maven.plugins</groupId>
                  <artifactId>maven-compiler-plugin</artifactId>
                  <version>2.5.1</version>
                  <configuration>
                  <skip>true</skip>
                  </configuration>
                </plugin>
        ...
      

      然后召唤

      mvn deploy -Pskip
      

      【讨论】:

      • 不知道你是怎么提到我的问题的 :-) 我正在寻找一个像“mvn生命周期名称”这样的命令来启动默认生命周期......
      • 好吧,我想你想跳过一些阶段
      • 是的...我不是以英语为母语的人:-(
      猜你喜欢
      • 2013-05-28
      • 2013-02-21
      • 2016-08-02
      • 2011-09-25
      • 1970-01-01
      • 1970-01-01
      • 2016-09-27
      • 2012-11-22
      • 1970-01-01
      相关资源
      最近更新 更多