如何调用Maven默认生命周期

问题描述 投票:4回答:3

如果我打电话

mvn clean install

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

如果我打电话

mvn deploy

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

是否可以通过提供生命周期名称(而不是执行生命周期的最后一个相位)来调用默认生命周期?

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

mvn lifecyclename

即开始执行默认生命周期?

maven lifecycle
3个回答
7
投票
没有命令可根据生命周期名称运行生命周期。因此,您

无法执行mvn Default,并期望它运行到Default:deploy。您将不得不提及周期任务,例如testpackageclean,拥有此任务的生命周期将被激活。

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

或者,键入mvn clean将更干净的生命周期;并且mvn clean:clean将运行Clean生命周期,直到clean任务为止。


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

Clean

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

[执行时看到说,mvn test这些是按该顺序执行的事情

验证>初始化>生成源>流程源>生成资源>流程资源>编译>流程类>后处理>生成测试源>流程测试源>生成测试资源>过程测试资源>测试编译>过程测试类>测试

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


4
投票
似乎有误会。进一步阅读可以澄清

mvn clean

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

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

© www.soinside.com 2019 - 2024. All rights reserved.