maven相当新鲜。通过在official website阅读maven文档,我知道在默认的lifeCycle中,有21个阶段,包括validate
,initialize
,generate-sources
,process-sources
,{{ 1}},generate-resources
,process-resources
,compile
,process-classes
,generate-test-sources
,process-test-sources
,generate-test-resources
,{{1} },process-test-resources
,test-compile
,test
,prepare-package
,package
,pre-integration-test
,integration-test
,post-integration-test
和verify
。
但是当我看到Built-in Lifecycle Bindings时,我发现没有插件目标绑定到install
,deploy
,validate
等各个阶段。
因此,如果我运行命令initialize
,那么没有插件目标的阶段会被执行吗?
或者这些阶段的插件目标是固定的,我们无法控制它们,因此无需在文档中编写它们。每次这些阶段(例如verify
,mvn package
,validate
等都会自动执行。
答案 0 :(得分:0)
首先,默认情况下没有绑定到阶段validate
,initialize
和verify
的插件(以及其他一些阶段)。
如果您运行mvn package
所有阶段都将被执行,但如果没有绑定到阶段的插件,您将无法看到它。如果您运行package
阶段,所有阶段(包括package
阶段本身)将从头开始执行validate
,initialize
,generate-sources
等等...... < / p>
有时将插件绑定到initialize
等阶段很有用。例如build-number-maven-plugin就是这种情况。
verify
之前的阶段,pre-integration-test
,integration-test
和post-integration-test
对于运行可由maven-failsafe-plugin处理的集成测试非常有用。单元测试由maven-surefire-plugin处理。
像generate-sources
这样的阶段经常被源生成插件jaxb2-maven-plugin或其他像插件处理器生成插件使用...