当前位置: 首页 > article >正文

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


http://www.kler.cn/a/417880.html

相关文章:

  • 如何在Bash中等待多个子进程完成,并且当其中任何一个子进程以非零退出状态结束时,使主进程也返回一个非零的退出码?
  • ScribblePrompt 医学图像分割工具,三种标注方式助力图像处理
  • Mysql数据库基础篇笔记
  • 网络安全防护指南:筑牢网络安全防线(5/10)
  • 港科夜闻 |香港科大推出 InvestLM生成式人工智能平台,支持金融中小企应用AI技术潜力...
  • DroneCAN 最新开发进展,Andrew在Ardupilot开发者大会2024的演讲
  • QT 实现QStackedWidget切换页面开门动画
  • Linux如何安装git
  • pytorch 融合 fuse 学习笔记
  • Linux:进程间通信之进程池和日志
  • Ubuntu 环境下的 C/C++ 编译与调试配置
  • “移门缓冲支架:为家庭安全加码”
  • 以达梦为数据库底座时部署的微服务页面报乱码,调整兼容模式
  • 医院数据库优化:提升性能与响应时间的关键策略
  • PostgreSQL实现透视表查询
  • Android启动流程,代码分析
  • 欢迪迈手机商城:基于SpringBoot的数据分析
  • RK3568平台开发系列讲解(PWM篇)PWM 子系统框架
  • vulnhub靶场【哈利波特】三部曲之Fawkes
  • 解决 Ubuntu 20.04 上的 torchvisionnms 运行时错误 详细步骤与分析
  • golang使用gos7读取S7200Smart数据
  • 关于使用天地图、leaflet、ENVI、Vue工具实现 前端地图上覆盖上处理的农业地块图层任务
  • Java 泛型详细解析
  • YOLO-学习笔记
  • 算法笔记:力扣148. 排序链表
  • 大模型学习方法之——大模型技术学习路线