Maven 简介

1.分布式架构的引入

 1.1传统的架构

  以前做的小项目,在小范围内使用的时候,我们只用了一台服务器就完成了整个项目的运行,即项目设计到的东西都部署到一台服务器上
这里写图片描述
  但是当有1000名用户同时登录服务器进行访问时,这时你的程序会运行的特别慢甚至会崩,就提出了以下解决的问题


 1.2 1000并发量

  此时想到的办法就是增加服务器做tomcat集群,分散访问量
这里写图片描述
  但是如果并发量再高,如10000的并发量,按这个思路就需要20台服务器。当tomcat集群中节点数量增加时,服务器能力先增加后下降(要进行session的复制)。集群中节点数量不能太多,一般在5个左右,针对高并发的情况,引入下面解决方案


 1.3 分布式架构

  按功能点把系统拆分成独立的功能,单独为每个结点添加服务器,当某个功能的访问量多时,就单独的为这个功能多添加服务器即可,这样分布式里也用到了集群
  分布式架构:把系统按模块拆分成多个子系统,多个子系统相互协作完成业务流程,系统之间需要进行通信(即每台服务器上的东西不一样,但是他们之间要协作完成业务工作)
  集群:同一个工程部署到多台服务器上(即每台服务器上的东西是一样的)
  分布式架构优点
    1) 把模块拆分,使用接口通信,降低模块之间的耦合度。
    2) 把项目拆分成若干个子项目,不同的团队负责不同的子项目。
    3) 增加功能时只需要再增加一个子项目,调用其他系统的接口就可以。
    4) 可以灵活的进行分布式部署

  分布式架构缺点:
      1) 系统之间交互需要使用远程通信,接口开发增加工作量。
      2) 各个模块有一些通用的业务逻辑无法共用。
  为解决此问题,有引入基于SOA的架构


 1.4 基于SOA的架构

  SOA:Service Oriented Architecture面向服务的架构。也就是把工程拆分成服务层、表现层两个工程。服务层中包含业务逻辑,只需要对外提供服务即可。表现层只需要处理和页面的交互,业务逻辑都是调用服务层的服务来实现
这里写图片描述
  服务层按业务功能划分,这样解决了不同模块之间都公共的逻辑的问题了,表现层要用哪个服务就调用哪个服务即可,这个架构是基于SOA的分布式架构

2.Maven是什么

  Maven是一个强大的项目管理和项目构建工具,利用java开发,属于Apache下的开源项目。maven是跨平台的,并且功能很强大,能够帮助使用者完成从清理,编译,测试,生成报告,打包和部署的一系列操作过程。maven标准化了项目的构建过程,有利于团队之间的协作。此外,maven可以有效的解决java项目中jar包依赖问题,解决由此带来的版本不一致等问题。maven还提供了一个免费的中央仓库,几乎可以找到任何开源类库。

3.Maven的好处

  maven有两个核心:依赖管理,项目构建,也是使用maven的好处

 3.1依赖管理:对jar包的管理

  我理解的就是仓库对jar包的管理

  1)通常一个web项目需要依赖很多jar包,而这些jar包可能又依赖另一些jar包,这些包可以成为冗余包,使用maven后,web项目只引进项目依赖的jar包,让项目保持基本的依赖,排除了冗余的jar包
  2)当需要修改jar包的版本号时,只需修改一下pom.xml中的版本号即可,他会自动依次到本地仓库,私服,和中央仓库上去找响应版本的jar并加载

  通过pom.xml在仓库中一层层的找到想要的jar包


 3.2项目构建:通过命令进行项目构建

  构建一般指(或是包括):
    1.下载依赖
    2.将源代码编译成二进制代码
    3.打包生成的二进制代码
    4.进行单元测试
    5.部署到生产系统
  这些过程可通过一条或几条命令自动的完成,工作量大量减少

4. Maven的使用

 4.1常用命令

    mvn install:在本地仓库Repository中安装当前工程的jar
    mvn compile:编译项目代码,将java文件编译成class文件
    mvn clean:清除编译产生内容,可配合别的命令一起使用
    mvn tomcat: run 启动tomcat
  注意:在eclipse中使用这些命令时,不需要加mvn,如mvn clean直接写clean即可


 4.2文件讲解

  1) pox.xml:maven项目的核心配置文件
    如web层,依赖service层接口,pojo,spring,zookeeper等,就需要在web层的pox.xml文件中配置有关上面这几个接口或插件的有关信息,如版本控制信息;pojo类不依赖任何东西,所以它的pom.xml文件中只有它自己的一些说明,如:

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <parent>
    <groupId>cn.e3mall</groupId>
    <artifactId>e3-manager</artifactId>
    <version>0.0.1-SNAPSHOT</version>
  </parent>
  <artifactId>e3-manager-pojo</artifactId>
</project>

  2) target文件夹
    它包括两部分:一部分是:编译的文件即将java文件编译成.class
文件,另一部分是额外的一些文件,位于m2e-wtp文件夹下,这一部分是永远存在的,但是不需要部署
  3)整体目录
    maven项目对项目中的文件进行了细分,什么目录放什么文件
这里写图片描述

5.Maven项目为何有父工程之分

  搭建的详细过程参照:https://blog.csdn.net/sinat_31726559/article/details/52133238
  两个Web项目之间,就是通过war包的方式进行引用的
  总体结构是这样的:

e3-parent:父工程,打包方式pom,管理jar包的版本号。
    |           项目中所有工程都应该继承父工程。
    |--e3-common:通用的工具类通用的pojo。打包方式jar
    |--e3-manager:服务层工程。聚合工程。Pom工程
        |--e3-manager-dao:打包方式jar
        |--e3-manager-pojo:打包方式jar
        |--e3-manager-interface:打包方式jar
        |--e3-manager-service:打包方式:jar
        |--e3-manager-web:表现层工程。打包方式war

  父工程:父工程中定义依赖jar包的版本和Maven插件的版本信息,为pom工程
  common工程:放通用的工具类。也需要继承taotao-parent工程。这个工程能打成jar包,被其他工程能引用,为pom工程
  manager工程:是一个聚合工程,包括pojo模块,service模块,service接口模块,dao模块
  web模块:前端工程,跟前端有关的jsp,css,js,springMVC等

  那么什么时候建Maven Project,什么时候建Maven Module???
    Maven Project可以理解为父工程。
    Maven Module可以理解为子工程。
    创建Maven Module工程必须有存在的父工程,maven就是通过父子工程进行工程管理的

6.jar、war、pom 打包方式区分

  jar:对一些class、properties文件打包,是文件封装的最小单元;包含java类的普通库,资源(resources)、辅助文件(auxiliary files)等。在maven中即是打包src/main/java和src/main/resources资源文件夹下的所有文件
  war:Servlet、JSP页面、JSP标记库、JAR库文件、HTML/XML文档和其他公用资源文件,如图片、音频文件等即包含全部的web应用程序;但是需要注意war引用war的时候会将应用war的资源全部拷贝到当前war的相同文件下,重名的文件会被替换
  pom:聚合工程得打包方式,只要有子工程,就用pom的打包方式

7.勾选create a simple project

  这样建的项目目录更标准

8.web工程和service工程两个工程是如何实现通信的

详情请见下片博客:

  • 2
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 12
    评论
评论 12
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值