如何调用maven默认生命周期

时间:2012-07-19 07:48:58

标签: maven lifecycle

如果我打电话

mvn clean install

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

如果我打电话

mvn deploy

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

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

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

mvn lifecyclename

开始执行默认生命周期?

3 个答案:

答案 0 :(得分:6)

没有命令可以基于生命周期名称运行生命周期。因此,您无法执行mvn Default并期望它最多运行Default:deploy。您将不得不提及testpackageclean周期的任务,并且拥有此任务的生命周期将变为活动状态。

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

或者,类型mvn clean将运行清洁生命周期将更加冗长;并且mvn clean:clean将运行清洁生命周期,直到clean任务。


Maven有三个生命周期。执行任何生命周期的任务(比如task_N)将导致执行整个生命周期直到该任务(task_N)。三个生命周期是清除默认站点

有关详细信息,请参阅此处Introduction to Maven Life-cycles and task order

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

  

验证>初始化> generate-sources> process-sources> generate-resources> process-resources>编译>流程类>后处理> generate-test-sources> process-test-sources> generate-test-resources> process-test-resources> test-compile>过程测试类>测试

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

答案 1 :(得分:3)

似乎存在误解。进一步阅读可以澄清

mvn clean

不会调用整个清洁生命周期。事实上,清洁生命周期中有一个干净的阶段。该命令执行此阶段而不是生命周期。

答案 2 :(得分:1)

据我所知,你不能执行一个孤立的生命周期阶段。

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

mvn deploy:deploy

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

如果您要执行与myplugin:mygoal阶段绑定的deploy,那么

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