如果我打电话
mvn clean install
maven 知道 clean 是一个生命周期,而 install 是默认生命周期的一个阶段
如果我打电话
mvn deploy
maven 将按顺序执行默认生命周期的所有阶段。
有没有办法通过提供生命周期名称来调用默认生命周期(而不是执行生命周期的最后一个阶段)?
编辑:所以问题是:是否有命令
mvn lifecyclename
开始执行默认生命周期?
没有基于生命周期名称运行生命周期的命令。所以你不能做 amvn Default
并期望它运行 upto Default:deploy
。您将不得不提及一个像,之类的循环任务,并且拥有该任务的生命周期将被激活。test
package
clean
将生命周期作为论据是没有意义的。这会令人困惑。例如运行mvn clean
是清洁生命周期还是清洁任务?
mvn clean
或者,键入将运行清洁生命周期会更冗长;并将mvn clean:clean
运行清洁生命周期直到clean
任务。
Maven有三个生命周期。执行任何生命周期的任务(比如 task_N)将导致执行整个生命周期,直到该任务(task_N)。三个生命周期是Clean、Default和Site。
有关更多详细信息,请参见此处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-测试资源>测试编译>过程测试类>测试
您不能跳过任何默认任务。您可以挂钩在任务期间执行的插件。
好像有什么误会。进一步阅读可以澄清
mvn clean
不会调用整个干净的生命周期。事实上,清洁生命周期中有一个清洁阶段。并且该命令执行此阶段而不是生命周期。
据我所知,您无法执行孤立的生命周期阶段。
但是你可以执行一个独立的插件目标。
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