• 《Maven实战》关联实际工作的核心知识


      通读了《Maven实战》这本书,由于在实际的工作中,对其有一定的操作上的经验。因此,再回头去通读这本书,就能够更加精准的把握里面的核心知识了。

      以下我主要从两点去介绍之——

    1> m2eclipse插件常用操作
    2> Maven最佳实践

      

    一.m2eclipse插件常用操作

      1> 执行mvn命令

      直接在项目上或者pom.xml上点击鼠标右键,选择Run As选项,就能看到这些命令——

       

      clean、test、package、install等都是常用的命令。这里特别想说的Maven build和maven build…两个选项卡——

      (1)  “Maven build…”:自定义maven命令:我们常常会用到clean package或者clean install等综合命令,这是非常好的实践方式。

      (2)  “Maven build”:会罗列之前自定义的所有maven命令,可选择其中一个执行值——

       

      2> 访问maven仓库

        显示maven视图——Windows-->Show View-->Other-->Maven Repositories

       

      我们会看到这里面有本地仓及中央仓库,就可以清晰地看见所有的maven库对应的jar或war包了。绝对方便实用。

      3> 项目依赖管理

      如何添加依赖就不说了,说一下如何分析依赖。这里模拟了这样一个例子——

      Hello4工程依赖hello3工程,hello工程依赖hello2工程,这样我们开启hello4工程的POM编辑器中的依赖层次项(Dependency Hierarchy),就能看到——

       

      在实际项目应用中,maven的重复依赖而导致的jar包版本冲突是常常会出现的,利用好该视图能够做出很好的分析。

      顺带一下Effective POM视图,它表示一个合并整个继承结构所有信息的POM。假设项目A继承自项目B,而B又隐式地继承自超级POM,那么A的Effective POM就包含了所有A、B以及超级POM的配置。有了Effective POM视图,用户就可以一次得到完整的POM信息。

    二、Maven最佳实践

      Maven的应用有以下几点核心理论——

      1> 坐标及依赖:Maven的一大功能是管理项目依赖。为了能够自动化的解析任何一个java构件,Maven就必须将它们唯一标识,通过坐标来实现之。

      2> 仓库:得益于坐标机制,任何Maven项目使用任何一个构件的方式都是完全相同的。在此基础上,Maven可以在某个位置统一存储所有Maven项目共享的构件,这个统一的位置就是仓库。

      3> 生命周期和插件:Maven的生命周期是为了对所有的构建过程进行抽象和统一。它包含项目的清理、初始化、编译、测试、打包、继承测试、验证、部署和站点生成等几乎所有构建步骤。形成一套高度完善的、易扩展的生命周期。其每一个步骤都是交由maven插件来完成。

      4> 聚合和继承

        聚合——如果我们想要一次构建两个(或者多个)项目,而不是到两个模块的目录下分别执行mvn命令,就会用到maven聚合(或者称为多模块)这样一个特性。

        继承——一谈到“继承”,便会想到解决重复问题。没错,maven的继承同样如是。

      对于聚合模块来说,它知道有哪些被聚合的模块,但哪些被聚合的模块不知道这个聚合模块的存在。

      对于继承关系的父POM来说,它不知道有哪些模块继承于它,单哪些子模块都必须知道自己的父POM是什么。

      对于第4点理论,我想引入这样一篇文章——Maven最佳实践:划分模块,这篇文章深刻的分析了使用Maven技术构建项目架构相比于传统的架构方式的优势所在。

      我们谈到Maven,我们会想到它的以下几点基本优势,也是它的功能所在——

      1> 自动化构建——从清理、编译、测试到生成报告,再到打包、部署。跨平台,并提供一致的对外接口。

      2> 依赖管理——Maven引入“仓库”的思想,通过经纬,帮助我们有序地管理依赖,轻松解决如版本不一致、版本冲突、依赖臃肿等问题。

      通过Maven最佳实践:划分模块这篇文章的深入理解,我们可以知道,它是对maven的依赖管理的引深,它让我们的framework、dao、service等各个环节都能够达到最大化的重用;让项目的依赖仅仅通过各自pom文件就能够轻松的得到有效管理,不用再到一个混乱的纷繁复杂的总的POM(或传统的xml)中寻找自己的配置;它将这个构建过程进行分块划分,我们可以根据实际分别构建dao、service等的编译、测试等环节。当然,Maven的聚合与继承功能,更加方便了我们的项目组织及管理。

    三、总结

      我再汇总一下我所谈到的重点:

    1> eclipse对maven的支持:熟练去使用m2eclipse插件,有助于帮助我们快速去定位相关问题,并能够夯实maven相关理论知识;
    2> maven核心理论:坐标及依赖、仓库、生命周期和插件、聚合和继承;
    3> 借助maven的聚合和继承特征,如何去组织并管理我们的项目

      OK,《Maven实战》里面其他的细节理论及操作在这里就不说了。

      欢迎大家来补充。最后,把这本书的封皮挂在这里——

  • 相关阅读:
    解决不同浏览器文件下载文件名乱码问题(Java)
    zabbix常见问题
    axiosapi,js结构化定义、调用业务api接口。 no
    Java基础:反射小结
    Java基础:函数式编程的函数的本质
    Java基础:Java方法的签名的定义
    Java基础:异常怎么分类的(面试题:Exception和Error的区别),看完这篇就都捋清了
    编程类型和代表性语言
    Java基础:构造器小结
    ubuntu搭建wifi热点,共享网络,超简单
  • 原文地址:https://www.cnblogs.com/jinguangguo/p/3303716.html
Copyright © 2020-2023  润新知