Java Web学习day27------maven基础

1、maven入门(maven的概念与作用)

1.1 maven的定义

(1)概述
  maven:一个项目管理工具,其最核心的配置文件是pom.xml.
(2)详解
  在tomcat服务器中或者我我们自己的web项目中,最核心的配置文件是web.xml;我们要使用mybatis,其中最核心的配置文件是MyBatisConfig.xml/SqlMapConfig.xml;同样的我们使用maven的核心配置文件则是pomxml

1.2 maven作用

(1)概述
  a) 依赖管理
  b) 项目构建
  c) 统一开发结构
(2)详解
  a) 依赖管理
    aa) 依赖的配置(jar包的管理)
      aaa) 我们创建项目时需要导入的第三方jar包的现状
        aaaa) 需要导入到WEB-INF/lib
        bbbb) 无配置,耦合性高
        cccc) 每创建一个项目则复制一份(浪费磁盘空间)
      bbb) 理想
        aaaa) 不需要导入到WEB-INF/lib
        bbbb) 可配置,解耦
        cccc) 有一个统一的存在地方,节约磁盘空间
    bb) jar包之间关系的管理
      aaa) 你的项目要使用a.jar,a.jar需要使用b.jar里面的类,例如junit-4.12.jar 依赖于hamcrest-core-1.3.jar。
      bbb) a.jar需要b.jar这个关系叫依赖,即junit-4.12.jar包需要hamcrest-core-1.3.jar包,这种关系为依赖。
      ccc) 按照之前的做法,要先导入hamcrest-core-1.3.jar,然后在导入junit-4.12.jar,而通过maven,我们只需要导入(其实是配置实现的)junit-4.12.jar 包即可,不需要关心junit-4.12.jar 依赖于什么.
      ddd) 就这一个还好,但在真实的项目中,用的jar包是非常多,可能会有几个G,这个时候依赖关系就非常复杂了,人来处理是非常耗时耗力并且准确率还没maven高.
      maven可以专门管理这种依赖的关系.
  b) 项目构建
    maven可以帮助我们创建项目目录,一键编译,一键测试,一键打包,一键部署,而要做到这些功能的前提是要有一个统一的开发结构。开发结构规定了源码路径,测试代码路径,配置文件路径以及编译后class文件路径,只有这样才能完成一键式。例如:我们在windows下安装软件,默认情况都是安装在c:盘下的,也就是说先要做到一键式就必须规定一个统一的目录才能够实现
  c) 统一开发结构
    想要做到项目构建的前提是要有一个统一的开发结构,否则不可能做到项目构建的.

2、依赖的配置(jar包的管理)

2.1 仓库

(1)概述
  存放jar包的
(2)分类
  a) 本地仓库:在我们自己电脑上的存放jar包的仓库.
  b) 远程仓库:非自己电脑上的仓库
  注意:jar包的下载过程是从远程仓库下载到本地仓库,我们使用的是本地仓库.即如果我们要是用指定jar包,则需要从远程仓库中下载到本地仓库后,我们才能使用此jar包.
  注意:远程仓库分为私服和中央仓库,中央仓库是所有仓库的源头,所有的开源jar包均可以通过中央仓库下载,但因下载速度比较慢,企业一般会搭建自己的私服

2.2 坐标

(1)概述
  描述仓库中jar的位置
(2)详解
  我们把要使用jar位置通过pom.xml告诉maven。maven就可以把指定的jar包导入到我们的项目中。例如我们需要mysql-connector-java版本为5.1.46的jar。我们只需要把jar包位置写在pom.xml中,maven就自动帮我们导入了mysql-connector-java版本为5.1.46的jar。
  坐标=groupId(组织id)+artifactId(项目id)+version(版本号)
  例如:mysql-connector-java版本为5.1.46的jar
    组织id:mysql
    项目id:mysql-connector-java
    版本号:5.1.46
(3)注意
  坐标是唯一的,不可重复的.

2.3 仓库配置

(1)本地仓库
  windows系统下

<localRepository>D:\maven\repository</localRepository>

  linux系统下

<localRepository>${user.home}/.m2/repository</localRepository>

(2)镜像仓库
  镜像仓库:一种特殊的中央仓库,它代替了maven官方的仓库,起到了与maven官方仓库一样的作用。
  以下是配置阿里的镜像仓库

		<mirror>
            <id>nexus-aliyun</id>
            <mirrorOf>central</mirrorOf>
            <name>Nexus aliyun</name>
            <url>http://maven.aliyun.com/nexus/content/groups/public</url>
        </mirror>

2.4 全局setting和用户setting

  全局setting:定义了当前计算机中maven的公共配合
  用户setting:定义了当前用户的配置

3、项目构建

3.1 项目结构

在这里插入图片描述

3.2 Maven的命令

  项目的构建是通过maven命令来操作的.
在这里插入图片描述

3.3 idea创建maven项目(重点)

  教程网上一大堆

3.4 部署

​  优点:将web项目部署到tomcat中,利用maven的插件比自己部署到tomcat方便,而且启动速度更快。

 <build>
    <!--设置插件-->
    <plugins>
      <!--具体的插件配置-->
      <plugin>
        <groupId>org.apache.tomcat.maven</groupId>
        <artifactId>tomcat7-maven-plugin</artifactId>
        <version>2.1</version>
        <configuration>
          <port>8066</port>
          <path>/</path>
        </configuration>
      </plugin>
    </plugins>
  </build>

4、jar包之间关系的管理中遇到的问题

4.1 依赖传递

(1)依赖具有传递性
  a) 直接依赖:在当前项目中通过依赖配置建立的建立的依赖关系
  b) 间接依赖:被资源的资源如果依赖其他资源,当前项目间接依赖于其他资源
在这里插入图片描述
(2)依赖的冲突问题
  a) 规则
    aa) 路径优先:当依赖中出现相同的资源时,层级越深,优先级越低,层级越浅,优先级越高
    bb) 声明优先:当资源在相同层级被依赖时,配置顺序靠前的覆盖配置顺序靠后的
    cc) 特殊优先:当同级配置了相同资源的不同版本,后配置的覆盖先配置的
在这里插入图片描述

4.2 可选依赖(了解)

  可选依赖:对外隐藏当前所依赖的资源–透明

4.3 排除依赖(了解)

  排除依赖:主动断开依赖的资源,被排除的资源无需指定版本–不需要

4.4 依赖的范围

在这里插入图片描述

4.5 依赖的范围传递(了解)

在这里插入图片描述

5、常见问题:

5.1统一jdk版本

前后版本要一致
(1)1.1.1打开Project Structure,在project中设置jdk版本
在这里插入图片描述
(2)1.1.2在Modules中设置jdk版本
在这里插入图片描述
在这里插入图片描述
(3)1.1.3在setting中设置jdk版本
在这里插入图片描述
(4)1.1.4重新构建项目
在这里插入图片描述

5.2选择不同的webapp

(1)在构建maven模板时选择如下webapp
在这里插入图片描述
(2)创建完后的项目结构如下:
在这里插入图片描述
(3)如果选择如下
在这里插入图片描述
(4)创建完后的项目结构如下,会比多出resources目录。
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值