Maven是一个很好的项目管理工具. 一方面有着众多脚手架,另一方面在依赖管理方面 帮助使用者做了很多准备工作.
随着Maven的使用和学习的深入,大家会不仅有一些问题。 比较浅显的一个就是, 日常我们的Maven 下载安装好以后,在IDE 里做好了配置,但是没有下载任何插件,或者POM文件里也没有添加任何插件的时候,无论是手动执行mvn命令,还是通过IDE 快捷方式运行. 他都能运行起来: 比如 mvn test, mvn complie, mvn clean ....
粗略的知道MAVEN 生命周期有和插件绑定. 但是我们项目初始时 并没有显示添加插件配置,为什么依旧可以执行呢. 具体原因时maven 在自己的核心core里已经配置好了生命周期与插件的绑定.
maven的打包方式有很多中,常用的有JAR, WAR, POM, MAVEN-PLUGIN, MAVEN-ARCHETYPE, EAR 等等. 不同的打包方式,对应不同的maven生命周期,以及不同的插件绑定.
例如 MAVEN 的componets.xml配置文件里已经约定好了.
<component><role>org.apache.maven.lifecycle.mapping.LifecycleMapping</role><role-hint>pom</role-hint><implementation>org.apache.maven.lifecycle.mapping.DefaultLifecycleMapping</implementation><configuration><lifecycles><lifecycle><id>default</id><phases><install>org.apache.maven.plugins:maven-install-plugin:3.1.1:install</install><deploy>org.apache.maven.plugins:maven-deploy-plugin:3.1.1:deploy</deploy></phases></lifecycle></lifecycles></configuration></component><component><role>org.apache.maven.lifecycle.mapping.LifecycleMapping</role><role-hint>jar</role-hint><implementation>org.apache.maven.lifecycle.mapping.DefaultLifecycleMapping</implementation><configuration><lifecycles><lifecycle><id>default</id><phases><process-resources>org.apache.maven.plugins:maven-resources-plugin:3.3.1:resources</process-resources><compile>org.apache.maven.plugins:maven-compiler-plugin:3.11.0:compile</compile><process-test-resources>org.apache.maven.plugins:maven-resources-plugin:3.3.1:testResources</process-test-resources><test-compile>org.apache.maven.plugins:maven-compiler-plugin:3.11.0:testCompile</test-compile><test>org.apache.maven.plugins:maven-surefire-plugin:3.1.2:test</test><package>org.apache.maven.plugins:maven-jar-plugin:3.3.0:jar</package><install>org.apache.maven.plugins:maven-install-plugin:3.1.1:install</install><deploy>org.apache.maven.plugins:maven-deploy-plugin:3.1.1:deploy</deploy></phases></lifecycle></lifecycles></configuration></component>
这就是为什么即使没有显示生命插件,MAVEN 已经运行那些命令. 这就是MAVEN的内置绑定.