您的位置:首页 > 其它

Maven学习总结系列一:Maven的简介

2017-11-28 23:35 183 查看
最近在整理以前的一些学习笔记,突然觉得似乎应该把这些总结发布到网络上,便于与大家一起交流。然后,然后就注册了一个CSDN帐号。


Maven这个系列,是我读Maven in Action(Maven实践)的读书笔记,在后面的时间,我会慢慢的更新上来。如果有什么错误,望大家指正。


Maven学习总结系列一:Maven的简介

Maven主要服务于基于JAVA平台的项目构建,依赖管理和项目信息管理。

开发中的问题1:在开发过程中,我们出经常出现一些重复的工作,如设计的重复,编码的重复,文档的重复和构建的重建。清理,编译,测试到生成报告,项目打包和部署。

每个项目的构建方式可能都不一样,维护成本,沟通成本上升。

方案设想:是否可以将收集项目上重复的事项,抽象提炼共同的特性,形成一个标准化的流程与构建方式,做一个工具让他可以自动帮我们处理。

 

Maven是一个构建工具

它实现“构建”标准化,简单化,自动化。

Maven抽象了一个完整的构建生命周期模型,吸取了大量其它构建脚本和构建工具的优点,总结了大量项目的实际需求。形成一个约定,标准,模型。

让构建命令简单一致化,统一规则,避免不必要的学习成本,有利于促进项目团队的标准化。

 

开发中的问题2:几乎任何Java应用都会借用一些第三方的开源类库,这些类库都可以通过依赖的方式引入到项目中来。但随着依赖的增多,版本的不一致,版本冲突,依赖臃肿等问题都会接踵而来。

 

方案思考:

造成依赖包混乱,难于管理,主要体现是随着项目的变大,引用的包越来越多,包与包之间可能会存在版本上的冲突。有些包可能以前有用到,但后期重构后又不需要的,但JAR包未被清除,造成依赖臃肿。

 

有没有一种工具可以统一管理所有的JAR包,可以自动的处理包与包之间的依赖关系。避免包的冲突。依赖的包可以自动加载。可以检测没有使用到的包,方便我们清理。

 

Maven的解决方案:

Maven是一个依赖管理工具

Maven引进一个基础概念,坐标系统。让世界上的每一个JAR包都有一个独一无二的坐标。这样它就可以通过坐标准确地定位每一个构件(Artifact)了。Maven给这个类库世界引入了经纬,让它们变得有秩序。

在这个基础上,有序地管理依赖便可得到问题。

 

为了实现每一个构件都有一个坐标,推行该标准。Maven为全世界的JAVA开发者提供了一个免费的中央仓库,在其中几乎可以找到任何流行的开源类库。只有定位了坐标,Maven就可以帮我们自动下载对应的JAR包。

 

Maven的中央仓库地址:

http://mvnrepository.com/

 

Artifact Junit坐标范例:

<!-- https://mvnrepository.com/artifact/junit/junit-->
<dependency>

    <groupId>junit</groupId>

    <artifactId>junit</artifactId>

    <version>4.12</version>

    <scope>test</scope>

</dependency>

 

 

约定优于配置(Convertion Over Configuration)的思想:

约定优于配置(conventionover configuration),也称作按约定编程,是一种软件设计范式,旨在减少软件开发人员需做决定的数量,获得简单的好处,而又不失灵活性。

本质是说,开发人员仅需规定应用中不符约定的部分。例如,如果模型中有个名为Sale的类,那么数据库中对应的表就会默认命名为sales。只有在偏离这一约定时,例如将该表命名为”products_sold”,才需写有关这个名字的配置。

如果您所用工具的约定与你的期待相符,便可省去配置;反之,你可以配置来达到你所期待的方式。

 

许多新的框架使用了约定优于配置的方法,包括:Spring,Rubyon Rails,Kohana PHP,Grails,Grok,Zend Framework,CakePHP,symfony,Maven,ASP.NETMVC,Web2py(MVC),Apache Wicket。

这是一个古老的概念,甚至在Java类库中也可以找出这一概念的踪迹。例如,JavaBean规范非常多的依赖这一概念。下面摘录JavaBeans 1.1版规范的一段:

按照一般的规则,我们不希望造出一个奇怪的java.beans.everything类,其他类需要从该类派生。而是希望在运行时JavaBeans为一般的对象提供缺省的行为特征,但是允许对象通过继承特定的java.beans.something接口来覆盖缺省的行为特征的一部分。

 

 

Maven使用“约定优于配置”的思想

Maven约定的项目结构如下图

 


 

只需配置很少的信息,Maven就可以自动完成编译、测试和打包等工作。

 

关联的思考:

Maven的思想,让我想到,在我们公司是否也可以将所有项目实施案例信息及方法收集总结,然后从实践中提炼成一套标准的实施方法。

同时为这套实施方法定义行业及版本,结合目前最前沿的管理思想,其它公司的实施方法论进行改进,优化。

建立一个小组专门对实施方法进行标准化,改进,优化。从理论,流程,组织方式,每个阶段的文档标准。

这样做的好处是,这套标准将会是公司日积月累最大的财富,每一个新人来后,可以在最短的时间内上手。节约培训成本。实施方案的优化可以加速项目实施的进度,提高项目实施的成功率。从而创造更高的价值,企业知名度。

 

 

 

 

 

 

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  maven