Maven 内置绑定到底怎么回事?

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的内置绑定.

相关推荐
JAVA面经实录9176 小时前
Java企业级工程化·终极完整版背诵手册(无遗漏、全覆盖、面试+落地通用)
java·开发语言·面试
许彰午8 小时前
CacheSQL(二):主从复制——OpLog 环形缓冲区与故障自动恢复
java·数据库·缓存
Bat U9 小时前
JavaEE|多线程初阶(七)
java·开发语言
掌心向暖RPA自动化11 小时前
如何获取网页某个元素在屏幕可见部分的中心坐标影刀RPA懒加载坐标定位技巧
java·javascript·自动化·rpa·影刀rpa
日取其半万世不竭11 小时前
Minecraft Java版社区服务器搭建教程(Linux,适合新手)
java·linux·服务器
TeamDev12 小时前
JxBrowser 9.0.0 版本发布啦!
java·前端·混合应用·jxbrowser·浏览器控件·跨平台渲染·原声输入
AI人工智能+电脑小能手13 小时前
【大白话说Java面试题】【Java基础篇】第24题:Java面向对象有哪些特征
java·开发语言·后端·面试
AI人工智能+电脑小能手13 小时前
【大白话说Java面试题】【Java基础篇】第25题:JDK1.8的新特性有哪些
java·开发语言·后端·面试
likerhood13 小时前
SLF4J: Failed to load class “StaticLoggerBinder“ 解决
java·log4j·maven
早日退休!!!14 小时前
大模型推理瓶颈七层分析模型
java·服务器·数据库