如果我打电话
mvn clean install
maven知道clean是生命周期,安装是默认生命周期的一个阶段
如果我打电话
mvn deploy
maven将按顺序执行默认生命周期的所有阶段。
有没有办法通过给出生命周期名称(而不是执行生命周期的最后一个phsae)来调用默认生命周期?
编辑:所以问题是:是否有命令
mvn lifecyclename
开始执行默认生命周期?
答案 0 :(得分:6)
没有命令可以基于生命周期名称运行生命周期。因此,您无法执行mvn Default
并期望它最多运行Default:deploy
。您将不得不提及test
,package
,clean
等周期的任务,并且拥有此任务的生命周期将变为活动状态。
将生命周期作为论据是没有意义的。这会令人困惑。例如,运行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中。
但是你最好跳过你不想要的插件执行。只能在命令行中跳过test
和integration-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