基本命令
Maven生命周期
Maven的生命周期是对所有的构建过程进行抽象和统一。Maven的生命周期是抽象的,这意味着生命周期本身不做任何实际的工作,生命周期只是定义了一系列的阶段,并确定这些阶段的执行顺序。而在执行这些阶段时,实际的工作还是由插件来完成的。这种思想与设计模式中的模板模式非常相似。
3个相互独立的生命周期
Maven有三套相互独立的生命周期:
- Clean
clean生命周期的目的是清理项目 - Default
default生命周期的目的是构建项目 - site
site生命周期的目的是建立项目站点。
生命周期 | clean | default | site |
---|---|---|---|
阶段(phase),执行顺序由上至下 | pre-clean | validate | pre-site |
clean | initialize | site | |
post-clean | generate-sources | post-site | |
process-sources | site-deploy | ||
generate-resources | |||
process-resources | |||
compile | |||
process-classes | |||
generate-test-sources | |||
process-test-sources | |||
generate-test-resources | |||
process-test-resources | |||
test-compile | |||
process-test-classes | |||
test | |||
prepare-package | |||
package | |||
pre-integration-test | |||
integration-test | |||
post-integration-test | |||
verify | |||
install | |||
deploy |
例如执行mvn clean,会从上到下依次执行pre-clean和clean
假设maven项目目录结构是这样的
mvn compile
编译命令,执行过后会生成对应的target目录
target中包含了maven插件和编译之后生成的class文件
mvn clean
清除target包的内容
mvn package
打包命令,本质上=mvn compile + mvn test + mvn package(看生命周期可以得出这个结论)
打包之后的target内容比较复杂
相比于compile,主要多了jar包,test包下的类class文件,说明确实执行了mvn test
mvn install
mvn package+把包放入本地maven仓库
我们先把本地maven仓库的jar包删除
然后执行mvn clean install
target与package没区别
但是本地maven仓库出现了jar包!