【T电商】 maven初识
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的理解和使用,还有待进一步的研究!
【T电商】 maven初识的更多相关文章
- 手把手教你使用VUE+SpringMVC+Spring+Mybatis+Maven构建属于你自己的电商系统之vue后台前端框架搭建——猿实战01
猿实战是一个原创系列文章,通过实战的方式,采用前后端分离的技术结合SpringMVC Spring Mybatis,手把手教你撸一个完整的电商系统,跟着教程走下来,变身猿人找到工作不是 ...
- 14 微服务电商【黑马乐优商城】:day02-springcloud(理论篇二:知道什么是SpringCloud)
本项目的笔记和资料的Download,请点击这一句话自行获取. day01-springboot(理论篇) :day01-springboot(实践篇) day02-springcloud(理论篇一: ...
- 从头开始 启动开源电商项目jShop
1. 引言 干了三年C#, 有了转Java 的念想,所以尝试学习一下java web,java语法本身和C#没有太多的差别,所以打算看看开源的java项目,开源的Java项目还是非常非常多的,曾经看了 ...
- 集DDD,TDD,SOLID,MVVM,DI,EF,Angularjs等于一身的.NET(C#)开源可扩展电商系统–Virto Commerce
今天一大早来看到园友分享的福利<分享一个前后端分离方案源码-前端angularjs+requirejs+dhtmlx 后端asp.net webapi>,我也来分享一个吧.以下内容由笔者写 ...
- 基于Hadoop技术实现的离线电商分析平台(Flume、Hadoop、Hbase、SpringMVC、highcharts)
离线数据分析平台是一种利用hadoop集群开发工具的一种方式,主要作用是帮助公司对网站的应用有一个比较好的了解.尤其是在电商.旅游.银行.证券.游戏等领域有非常广泛,因为这些领域对数据和用户的特性把握 ...
- Java架构师系统培训高并发分布式电商实战activemq,netty,nginx,redis dubbo shiro jvm虚拟机视频教程下载
15套java架构师.集群.高可用.高可扩 展.高性能.高并发.性能优化.Spring boot.Redis.ActiveMQ.Nginx.Mycat.Netty.Jvm大型分布 式项目实战视频教程 ...
- 用SpringBoot搭建简单电商项目 01
前几节呢,我们已经简单介绍了SpringBoot框架的使用,从这一节开始,我们尝试着使用SpringBoot框架来一步一步搭建一个简单电商项目.当然了,这不是真正的电商项目,你可以看成是一个CRUD案 ...
- Java开源生鲜电商平台-系统架构与技术选型(源码可下载)
Java开源生鲜电商平台-系统架构与技术选型(源码可下载) 1. 硬件环境 公司服务器 2. 软件环境 2.1 操作系统 Linux CentOS 6.8系列 2.2 反向代理/web服务器 ...
- Spring Boot 构建电商基础秒杀项目 (一) 项目搭建
SpringBoot构建电商基础秒杀项目 学习笔记 Spring Boot 其实不是什么新的框架,它默认配置了很多框架的使用方式,就像 maven 整合了所有的 jar 包, Spring Boot ...
- JAVAEE——宜立方商城01:电商行业的背景、商城系统架构、后台工程搭建、SSM框架整合
1. 学习计划 第一天: 1.电商行业的背景. 2.宜立方商城的系统架构 a) 功能介绍 b) 架构讲解 3.工程搭建-后台工程 a) 使用maven搭建工程 b) 使用maven的tomcat插件启 ...
随机推荐
- matlab 非平稳变化时域分析
对于非平稳信号,由于傅立叶变换核心函数-正弦函数具有无限性,因此选用短时窗来分析局域信号: 需要注意的时,选取完滑动的时间窗一般是中心对称而且为奇数,这时被分析的时间点正好是滑动窗的中点. 因此,时域 ...
- Java中的Scanner类和String类
1:Scanner的使用(了解) (1)在JDK5以后出现的用于键盘录入数据的类. (2)构造方法: A:讲解了System.in这个东西. 它其实是标准的输入流,对应于键 ...
- Libgdx 开发指南(1.3) 应用框架——查询、日志
查询 Application接口提过多种方法查询运行时环境属性. 获得应用类型 有时候根据运行平台需要处理一些具体的逻辑,可以使用 Application.getType() 方法来返回应用所运行的平 ...
- [转]Centos 6.5 安装 Scrapy 0.22.2成功
0. python -V (此时显示为2.6.6) 1. yum -y update 2. yum groupinstall -y development 3. yum ...
- Unity Sprite转Prefab
新项目使用Unity5.X,遇到了一些问题,其中就有Sprite的管理更新问题,查了一些资料,Mono推荐的是转为Prefab处理. 看了一些国外同行的处理方法,分析了一个编辑器插件脚本.学到了一些技 ...
- Mini2440 LED驱动程序设计
1 LED初始化: 2 LED闪烁设计 位或操作:| 取反操作:~ 位与操作:& http://www.tuicool.com/articles/eQzEJv
- 解决CentOS6.4 Docker "Couldn't connect to Docker daemon ..." 问题
OS: CentOS6.4 #uname -r 2.6.32-504.1.3.el6.x86_64 安装完毕fig,并完成相应配置时执行如下命令出错(fig安装参见:http://www.fig.sh ...
- 计算std:string的字节长度
如果项目本身是使用 Unicode 字符集和utf8编码,std::string的length(),size()甚至是c的strLen取到的都是字节长度了,比如三个汉字,就是9, 以上情况不满足的话, ...
- Jena Fuseki 101
前言 正如其承诺的那样 Expose your triples as a SPARQL end-point accessible over HTTP. Fuseki provides REST-sty ...
- ajax上传图片到服务器
通过Ajax方式上传文件,使用FormData进行Ajax请求.上传文件或图片时,要求的格式为enctype ="multipart/form-data"(以二进制格式上传),在使 ...