PS:本篇博客,就是对于maven的一个简单的总结,认识。可能更多的是借鉴别人的看法,然后结合自己的使用,再加以说明。

首先,什么是maven:

Apache Maven is a software project management and comprehension tool. Based on the concept of a project object model (POM), Maven can manage a project's
build, reporting and documentation from a central piece of information.

简单说来,maven就是一款帮助我们进行jar包管理和发布部署的一款产品。

一、没有maven的时代

结合自己的应用来说,在没有maven的时候,每次我建立一个项目的时候,需要下载很多的jar包,当我依赖一个项目时,也要先编写代码,然后打成jar,然后添加进项目的jar库里,然后才会进行使用。在这个时候,我就有以下的几点小抱怨:

1,每次都在拷jar包,多一个少一个的,常有的事儿。

2,有时候引入的jar包,因为版本不对,麻烦

3,我还得在本地找个地儿将jar存起来,靠。忍不了,关键是在项目的维护阶段,管理这些jar包本身就是个巨大的工程。它得依赖维护人员对于这个项目的版本更替有一定的了解,才能决定jar的去留和升级。

4,有时候我会引入一个jar包,但可能,它根本没有用到,但是久而久之,我就不知道哪一个没用,不敢删,导致jar包系统越来越庞大。

那时候,我就在想,我可不可以不要引入那么多那么多的jar包了,后来,发现maven了。

二、maven的应运而生

maven是一款帮助我们管理jar包、文档等,和部署项目的一个工具。那么,对于目前的我来说,最显而易见的,也是最实际的效果就是,使用maven,最起码的解决了我不停下载jar包和管理jar包的工作。

maven为重复性的工作提供了一种选择,使开发者的注意力从作业层转移到项目管理层。它带来的好处,主要有:

1、项目构建。Maven定义了软件开发的整套流程体系,并进行了封装,开发人员只需要指定项目的构建流程,无需针对每个流程编写自己的构建脚本。

2、依赖管理。除了项目构建,Maven最核心的功能是软件包的依赖管理,能够自动分析项目所需要的依赖软件包,并到Maven中心仓库去下载。

A)管理依赖的jar包

B)管理工程之间的依赖关系。

三、maven的基本介绍

简单说来,maven分为聚合工程和普通工程,聚合和普通工程可以简单的看做是一种父子关系。为什么会出现聚合呢?随着业务需求的增加,我们开发的系统,会面临着分层和分布式的选择。最起码,我们也是用过了三层的。

聚合,在我个人看来,是一种更高层级的抽象。它首先将我们的一个项目,进行出现为parent父工程,并在里面,使用pom文件,为其工程添加基础依赖,如:

在这里面,parent和manager同属聚合工程,但是,manager继承于parent,为什么呢?因为这个项目共包含两个子项目,一个是后台管理系统,也就是manager系统,一个是前台web端系统。parent,是整个项目的一个抽象聚合,在它的pom文件中,配置了一些基本的jar包依赖。

在manager中,我们可以看到的是,它包含了4个子模块,它类似于VS中的一个解决方法,这个解决方案叫manager,而我们分层的UI层,BLL层,DAL层,Entity层,就相当于这里面的几个子模块,在manager这个聚合工程中,他通过组件聚合引用的方式,将这几个模块聚合形成一个系统,比如:

<span style="font-family:KaiTi_GB2312;font-size:18px;">	<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>com.angel.taotao</groupId>
<artifactId>taotao-parent</artifactId>
<version>0.0.1-SNAPSHOT</version>
</parent>
<groupId>com.angel.taotao</groupId>
<artifactId>taotao-manager</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>pom</packaging> <!-- 依赖管理 -->
<dependencies>
<dependency>
<groupId>com.angel.taotao</groupId>
<artifactId>taotao-common</artifactId>
<version>0.0.1-SNAPSHOT</version>
</dependency>
</dependencies>
<modules>
<module>taotao-manager-pojo</module>
<module>taotao-manager-mapper</module>
<module>taotao-manager-service</module>
<module>taotao-manager-web</module>
</modules></span>

备注:依赖项中的common,可以理解为整个项目的工具类。

在每一个pom文件的依赖配置中,主要包含以下几个节点:

<modelVersion>4.0.0</modelVersion> 这是聚合工程的版本号

groupid:项目组Id,项目坐标的核心元素。比如上面的配置文件中,groupid均为com.angel.taotao,因为整个项目(包括后台管理和web端),这个项目的组id叫做com.angel.taotao

artifactId:项目的通用名称,可以看做是我们在使用三层时,每一层的名称

version:项目的版本

注意:每一个maven工程里面,都需要有一个war工程,也就是相当于UI层。而其他的jar工程,也都可以被打包再次引用。

四、总结

这次总结,只是一个简单的初识,对于maven的使用,还在继续探索中。比如说,maven的核心对象pom, 作为项目对象模型。通过xml表示maven项目,使用pom.xml来实现。主要描述了项目:包括配置文件;开发者需要遵循的规则,缺陷管理系统,组织和licenses,项目的url,项目的依赖性,以及其他所有的项目相关因素。对于这个pom的理解和使用,还有待进一步的研究!

【Ts 1】 maven初识的更多相关文章

  1. 【T电商】 maven初识

    PS:本篇博客,就是对于maven的一个简单的总结,认识.可能更多的是借鉴别人的看法,然后结合自己的使用,再加以说明. 首先,什么是maven: Apache Maven is a software ...

  2. Maven初识

    说说maven,我们每做一个项目,都要往lib目录扔很多jar包,spring的啊hibernate的啊apache的啊等等,这样就会导致很多包不知从哪个角落下载回来的,名称千奇百怪,版本也不明,项目 ...

  3. maven - 初识

    一.Maven是什么? Maven官网的描述:Apache Maven is a software project management and comprehension tool. Based o ...

  4. 初识JAVA语言

    推荐阅读:  我的CSDN  我的博客园  QQ群:704621321 前言        很多游戏开发者可能会有疑问,你会C#,JS,TS,为什么还要初识JAVA呢?有人可能会说,多学点对自己有好处 ...

  5. Maven的下载,安装,配置,测试,初识以及Maven私服

    :Maven目录分析 bin:含有mvn运行的脚本 boot:含有plexus-classworlds类加载器框架 conf:含有settings.xml配置文件 lib:含有Maven运行时所需要的 ...

  6. Maven知识记录(一)初识Maven私服

    Maven知识记录(一)初识Maven私服 什么是maven私服 私服即私有的仓库.maven把存放文件的地方叫做仓库,我们可以理解成我门家中的储物间.而maven把存放文件的具体位置叫做坐标.我们项 ...

  7. 初识Maven

    今天开始学习怎样使用maven,听起来挺神奇的东西,我们来一步一步的加以剖析. Maven的一些具体的论文的东西,网上很多博客介绍,这里我就不逐一介绍,下面我们从安装maven开始讲解: (1)Mav ...

  8. Maven的下载,安装,配置,测试,初识

    1:Maven官网:http://maven.apache.org/ Maven远程仓库:http://search.maven.org/ 2:Maven是一个采用纯Java编写的开源项目管理工具,M ...

  9. Maven(一)初识Maven

    前言 在这之前一直都有去看关于Maven的相关介绍,但是没有到真正要用的时候,自己总是以为懂了.其实真的感觉Maven并没有想象的那么简单! 那我们该怎么去学习maven呢?接下来我将从: 初步认识m ...

随机推荐

  1. JAVA常用设计模式(静态化调用和实例化调用的区别,编辑可见 )

    用newInstance()与用new是区别的,区别在于创建对象的方式不一样,前者是使用类加载机制,后者是创建一个新类,且newInstance()只能调用无参构造函数. 最大的区别在于内存.静态方法 ...

  2. 亚马逊左侧菜单延迟z三角 jquery插件jquery.menu-aim.js源码解读

    关于亚马逊的左侧菜单延迟,之前一直不知道它的实现原理.梦神提到了z三角,我也不知道这是什么东西.13号那天很有空,等领导们签字完我就可以走了.下午的时候,找到了一篇博客:http://jayuh.co ...

  3. UVA6531Go up the ultras

    链接 这题意甚是难懂..当且峰值为h 如果他能为ultras 需要满足条件 d>=15W d满足它到任意一个比它高的点须经过h-d这个点 通俗一点来说,如果这个点满足条件 就找离他最近的一个&l ...

  4. [转]VC++中对文件的写入和读取

    本文转自:http://blog.csdn.net/fanghb_1984/article/details/7425705 本文介绍两种方法对文件进行读取和写入操作:1.采用fstream类:2.采用 ...

  5. requirejs&&springboot

    1.Spring Boot Spring boot 基础结构主要有三个文件夹: (1)src/main/java  程序开发以及主程序入口 (2)src/main/resources 配置文件 (3) ...

  6. ArrayList不同循环方式

    一: ArrayList<String> list = new ArrayList<String>();  list.add("1");  list.add ...

  7. AI学习一:环境安装

    对于Python开发用户来讲,PIP安装软件包是家常便饭.但国外的源下载速度实在太慢,浪费时间.而且经常出现下载后安装出错问题.所以把PIP安装源替换成国内镜像,可以大幅提升下载速度,还可以提高安装成 ...

  8. 51nod 1097 拼成最小的数

    基准时间限制:1 秒 空间限制:131072 KB 分值: 20 难度:3级算法题  收藏  关注 设有n个正整数,将它们联接成一排,组成一个最小的多位整数.     例如: n=2时,2个整数32, ...

  9. 分享一个开源的JavaScript统计图表库,40行代码实现专业统计图表

    提升程序员工作效率的工具/技巧推荐系列 推荐一个功能强大的文件搜索工具SearchMyFiles 介绍一个好用的免费流程图和UML绘制软件-Diagram Designer 介绍Windows任务管理 ...

  10. 在.vue文件中让html代码自动补全的方法(支持vscode)

    在.vue文件中让html代码自动补全的方法(支持vscode) https://blog.csdn.net/qq_36529459/article/details/79196763 "fi ...