maven基础学习笔记

可以暂时把maven看做一个jar包管理工具即可,基于maven构建的项目中的jar包,可以通过maven来进行统一管理,更加方便和智能。

一、安装

  • 官网下载对应的安装压缩包

  • 解压到一个全英文的目录
    在这里插入图片描述- 配置环境变量

    • maven的运行依赖于jdk的环境变量,所以要先确保配置了jdk的环境变量
      在这里插入图片描述在这里插入图片描述
      在这里插入图片描述在这里插入图片描述
  • 验证是否安装成功
    在这里插入图片描述

二、仓库种类和关系

1.本地仓库的默认地址

  • 在maven的安装目录下的conf文件夹下打开settings.xml文件
    在这里插入图片描述- 可以看到本地仓库的默认地址是系统盘下的目录
  • 但是为了节省系统盘的宝贵空间,一般会修改这个默认的地址
    在这里插入图片描述

2.仓库种类和关系

在这里插入图片描述

  • 三种仓库
    • 本地仓库:就是本地电脑上的一个个人仓库,如果属于联网状态,就会自动和中央仓库保持连接,下载需要的jar包
    • 远程仓库:一些公司和单位为了保证在不联网或者公司局域网的状态下也能实现开发,就在内部建立一个仓库
    • 中央仓库:包含了几乎所有开源的jar包

三、maven标准目录结构和常用命令

1.标准目录结构

在这里插入图片描述

2.常用命令

以一个待发布的项目为例,测试常用的命令

在这里插入图片描述

2.1 mvn clean

清除掉待发布项目下的target文件夹,为重新编译做准备,因为已有的target文件可能是以前在其他平台上编译的,所以要先清楚
在这里插入图片描述在这里插入图片描述

  • target文件夹被删除

2.2 mvn compile

compile是maven工程的编译命令,作用是将src/main/java下的文件编译为class文件输出到target目录下。

在这里插入图片描述在这里插入图片描述
在这里插入图片描述

  • 可以看到字节码文件成功被编译

2.3 mvn test

test是maven工程的测试命令 mvn test,会执行src/test/java下的单元测试类。
在这里插入图片描述在这里插入图片描述

2.4 mvn package

package是maven工程的打包命令,对于java工程执行package打成jar包,对于web工程打成war包。

在这里插入图片描述
在这里插入图片描述

2.5 mvn install

install是maven工程的安装命令,执行install将maven打成jar包或war包发布到本地仓库。
在这里插入图片描述

2.6后面的命令覆盖前面的命令

就是执行后面的命令,如果前面的命令没有被执行,会被自动执行

三、maven生命周期

1、生命周期

在这里插入图片描述

2、概念模型图

在这里插入图片描述

四、使用骨架创建的maven的java工程项目

1、IDEA集成maven插件

前提条件是电脑上已经安装好了maven

  • IDEA初始界面进入设置
    在这里插入图片描述

  • 设置界面搜索maven
    在这里插入图片描述

  • 设置本地maven地址和本地仓库
    在这里插入图片描述

  • runner设置
    在这里插入图片描述

2.使用骨架创建maven的java项目(不推荐)

就是别人写好的一个模板,我们套用这个模板

在这里插入图片描述在这里插入图片描述在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述在这里插入图片描述

  • 观察当前项目的目录,发现并不是maven项目的标准项目,所以需要手动补齐
    在这里插入图片描述在这里插入图片描述在这里插入图片描述

3.不使用骨架创建maven的java项目(推荐)

在这里插入图片描述在这里插入图片描述在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

4.使用骨架创建maven的web项目

在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述

在这里插入图片描述
在这里插入图片描述在这里插入图片描述

  • 注意一个设置,不然会导致后面无法直接创建web三大组件
    在这里插入图片描述

五、基于maven的web项目的简单实例

1.基本项目实现以及可能遇到的问题

写一个简单的servlet跳转到一个jsp文件

  • 先创建一个servlet
    在这里插入图片描述

  • 这样创建出来的servlet,会自动在xml文件中完成一半的路径配置,我们需要补全
    在这里插入图片描述

  • 但是现在sevlet中找不到jar包,需要在pom文件中配置
    在这里插入图片描述- IDEA的提示功能,可以很方便的添加坐标
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

  • 如何添加特定版本的jar包

    • 进入maven中央仓库https://mvnrepository.com/
    • 搜索栏搜素jar包名字
      在这里插入图片描述在这里插入图片描述- 点击版本号,进入,复制坐标地址接即可
      在这里插入图片描述
  • 在项目中,可以在右侧运行mvn命令

在这里插入图片描述

  • 也可以通过命令行的方式来运行相关命令
    在这里插入图片描述

  • tomcat启动后,尝试访问:
    在这里插入图片描述

  • 发现报错
    在这里插入图片描述

  • 这个报错的原因在于jar包冲突,即是存在了两套jar包

  • servlet和jsp这些包,在maven本身的安装目录下是存在的,我们又通过本地仓库导入了一套

  • 为了避免,需要指定每个jar包的作用域,让其只在编译时期起作用


 <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>4.11</version>
      <scope>test</scope>
    </dependency>


    <dependency>
      <groupId>javax.servlet</groupId>
      <artifactId>servlet-api</artifactId>
      <version>2.5</version>
      <scope>provided</scope>
    </dependency>

    <dependency>
      <groupId>javax.servlet.jsp</groupId>
      <artifactId>jsp-api</artifactId>
      <version>2.0</version>
      <scope>provided</scope>
    </dependency>

2.修改maven工程的运行环境

有时候我们想使用特定版本的tomcat和特定版本的jdk,就需要通过pom文件进行指定

2.1指定版本的tomcat并模板化代码

     <plugin>
          <groupId>org.apache.tomcat.maven</groupId>
          <artifactId>tomcat7-maven-plugin</artifactId>
          <version>2.2</version>
          <configuration>
            <port>8888</port>
          </configuration>
        </plugin>

在这里插入图片描述

  • 在两个tomcat的端口不同的情况下,是可以同时启动两个服务器,并访问的
    在这里插入图片描述在这里插入图片描述- 模板化
    在这里插入图片描述在这里插入图片描述
    在这里插入图片描述在这里插入图片描述

2.1指定版本的jdk并模板化代码

  • 和上面的步骤几乎一样,就不细说了

        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>mvn-compile-plugin</artifactId>
          <configuration>
            <taeget>1.8</taeget>
            <resource>1.8</resource>
            <encoding>UTF-8</encoding>
          </configuration>
        </plugin>

六、maven中jar包的依赖范围

项目A依赖jar包B,则需要在A的pom.xml文件中添加B的坐标,添加坐标时需要指定依赖范围,依赖范围包括。

  • compile:编译范围,指A在编译时依赖B,此范围为默认依赖范围。编译范围的依赖会用在编译、测试、运行,由于运行时需要所以编译范围的依赖会被打包。
  • provided:provided依赖只有在当JDK或者一个容器已提供该依赖之后才使用, provided依赖在编译和测试时需要,在运行时不需要,比如:servlet api被tomcat容器提供。
  • runtime:runtime依赖在运行和测试系统的时候需要,但在编译的时候不需要。比如:jdbc的驱动包。由于运行时需要所以runtime范围的依赖会被打包。
  • test:test范围依赖 在编译和运行时都不需要,它们只有在测试编译和测试运行阶段可用,比如:junit。由于运行时不需要所以test范围依赖不会被打包。
  • system:system范围依赖与provided类似,但是你必须显式的提供一个对于本地系统中JAR文件的路径,需要指定systemPath磁盘路径,system依赖不推荐使用。

在这里插入图片描述

1.小结

  • 默认引入 的jar包 ------- compile 【默认范围 可以不写】(编译、测试、运行 都有效 )
  • servlet-api 、jsp-api ------- provided (编译、测试 有效, 运行时无效 防止和tomcat下jar冲突)
  • jdbc驱动jar包 ---- runtime (测试、运行 有效 )
  • junit ----- test (测试有效)
  • 依赖范围由强到弱的顺序是:compile>provided>runtime>test
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值