热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

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

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坐标范例:

    junit

    junit

    4.12

    test

 

 

约定优于配置(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就可以自动完成编译、测试和打包等工作。

 

关联的思考:

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

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

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

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

 

 

 

 

 

 

 


推荐阅读
  • Java序列化对象传给PHP的方法及原理解析
    本文介绍了Java序列化对象传给PHP的方法及原理,包括Java对象传递的方式、序列化的方式、PHP中的序列化用法介绍、Java是否能反序列化PHP的数据、Java序列化的原理以及解决Java序列化中的问题。同时还解释了序列化的概念和作用,以及代码执行序列化所需要的权限。最后指出,序列化会将对象实例的所有字段都进行序列化,使得数据能够被表示为实例的序列化数据,但只有能够解释该格式的代码才能够确定数据的内容。 ... [详细]
  • 如何使用Java获取服务器硬件信息和磁盘负载率
    本文介绍了使用Java编程语言获取服务器硬件信息和磁盘负载率的方法。首先在远程服务器上搭建一个支持服务端语言的HTTP服务,并获取服务器的磁盘信息,并将结果输出。然后在本地使用JS编写一个AJAX脚本,远程请求服务端的程序,得到结果并展示给用户。其中还介绍了如何提取硬盘序列号的方法。 ... [详细]
  • 本文介绍了RPC框架Thrift的安装环境变量配置与第一个实例,讲解了RPC的概念以及如何解决跨语言、c++客户端、web服务端、远程调用等需求。Thrift开发方便上手快,性能和稳定性也不错,适合初学者学习和使用。 ... [详细]
  • 本文介绍了南邮ctf-web的writeup,包括签到题和md5 collision。在CTF比赛和渗透测试中,可以通过查看源代码、代码注释、页面隐藏元素、超链接和HTTP响应头部来寻找flag或提示信息。利用PHP弱类型,可以发现md5('QNKCDZO')='0e830400451993494058024219903391'和md5('240610708')='0e462097431906509019562988736854'。 ... [详细]
  • 在Xamarin XAML语言中如何在页面级别构建ControlTemplate控件模板
    本文介绍了在Xamarin XAML语言中如何在页面级别构建ControlTemplate控件模板的方法和步骤,包括将ResourceDictionary添加到页面中以及在ResourceDictionary中实现模板的构建。通过本文的阅读,读者可以了解到在Xamarin XAML语言中构建控件模板的具体操作步骤和语法形式。 ... [详细]
  • 本文介绍了Python爬虫技术基础篇面向对象高级编程(中)中的多重继承概念。通过继承,子类可以扩展父类的功能。文章以动物类层次的设计为例,讨论了按照不同分类方式设计类层次的复杂性和多重继承的优势。最后给出了哺乳动物和鸟类的设计示例,以及能跑、能飞、宠物类和非宠物类的增加对类数量的影响。 ... [详细]
  • 搭建Windows Server 2012 R2 IIS8.5+PHP(FastCGI)+MySQL环境的详细步骤
    本文详细介绍了搭建Windows Server 2012 R2 IIS8.5+PHP(FastCGI)+MySQL环境的步骤,包括环境说明、相关软件下载的地址以及所需的插件下载地址。 ... [详细]
  • 这是原文链接:sendingformdata许多情况下,我们使用表单发送数据到服务器。服务器处理数据并返回响应给用户。这看起来很简单,但是 ... [详细]
  • 本文分享了一个关于在C#中使用异步代码的问题,作者在控制台中运行时代码正常工作,但在Windows窗体中却无法正常工作。作者尝试搜索局域网上的主机,但在窗体中计数器没有减少。文章提供了相关的代码和解决思路。 ... [详细]
  • Metasploit攻击渗透实践
    本文介绍了Metasploit攻击渗透实践的内容和要求,包括主动攻击、针对浏览器和客户端的攻击,以及成功应用辅助模块的实践过程。其中涉及使用Hydra在不知道密码的情况下攻击metsploit2靶机获取密码,以及攻击浏览器中的tomcat服务的具体步骤。同时还讲解了爆破密码的方法和设置攻击目标主机的相关参数。 ... [详细]
  • [译]技术公司十年经验的职场生涯回顾
    本文是一位在技术公司工作十年的职场人士对自己职业生涯的总结回顾。她的职业规划与众不同,令人深思又有趣。其中涉及到的内容有机器学习、创新创业以及引用了女性主义者在TED演讲中的部分讲义。文章表达了对职业生涯的愿望和希望,认为人类有能力不断改善自己。 ... [详细]
  • Android Studio Bumblebee | 2021.1.1(大黄蜂版本使用介绍)
    本文介绍了Android Studio Bumblebee | 2021.1.1(大黄蜂版本)的使用方法和相关知识,包括Gradle的介绍、设备管理器的配置、无线调试、新版本问题等内容。同时还提供了更新版本的下载地址和启动页面截图。 ... [详细]
  • 本文介绍了Web学习历程记录中关于Tomcat的基本概念和配置。首先解释了Web静态Web资源和动态Web资源的概念,以及C/S架构和B/S架构的区别。然后介绍了常见的Web服务器,包括Weblogic、WebSphere和Tomcat。接着详细讲解了Tomcat的虚拟主机、web应用和虚拟路径映射的概念和配置过程。最后简要介绍了http协议的作用。本文内容详实,适合初学者了解Tomcat的基础知识。 ... [详细]
  • IjustinheritedsomewebpageswhichusesMooTools.IneverusedMooTools.NowIneedtoaddsomef ... [详细]
  • mac php错误日志配置方法及错误级别修改
    本文介绍了在mac环境下配置php错误日志的方法,包括修改php.ini文件和httpd.conf文件的操作步骤。同时还介绍了如何修改错误级别,以及相应的错误级别参考链接。 ... [详细]
author-avatar
金针菇滚滚夹着五根水葱
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有