4

如果我打电话

mvn clean install

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

如果我打电话

mvn deploy

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

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

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

mvn lifecyclename

开始执行默认生命周期?

4

3 回答 3

8

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

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

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


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

有关更多详细信息,请参见此处Maven 生命周期和任务顺序简介

你看,当你执行的时候,mvn test这些事情是按那个顺序执行的

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

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

于 2012-07-19T09:17:37.580 回答
5

好像有什么误会。进一步阅读可以澄清

mvn clean

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

于 2012-07-19T09:03:57.647 回答
1

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

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

mvn deploy:deploy

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

如果你想执行一个myplugin:mygoaldeploy阶段相关的,那么

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
于 2012-07-19T08:03:36.037 回答