Maven知识学习

1 Maven 入门

1.1 概述

1.1.1是什么?

传统的项目管理状态分析:
当我们在开发项目的时候,由于多个人员开发不同的模块,各个人员使用的版本的不一样,导致出现错误,jar包不统一,jar包不兼容,工程审计维护过程操作繁琐等问题。为了解决这个问题,出现了maven的技术。

maven本质: 是一个项目管理工具,将项目开发和管理过程抽象城一个项目对象模型(Project Object Model)

1.1.2为什么?

  1. 跨平台
  2. 最大的消除了构建的重复
  3. 可以帮助我们标准化构建过程
  4. 一个依赖管理工具和项目信息管理工具
  5. 提供了中央仓库(提供里各种工具,需要网络支持)
  6. 对于项目目录结构和测试用例的命名都有规范

1.1.3主要功能

  • 依赖管理
    一个项目对应一个pom.xml文件,通过pom对对项目进行管理,那怎么管理的呢;靠依赖管理:依赖管理就是项目的资源,你的项目可以成为别人项目的资源,别人的项目也可以成文你项目的资源;那资源在哪呢?需要使用它,就需要在电脑上找到,这个资源就在本地(仓库),我们的电脑无法给所有人访问,所有需要将所有的公共资源提取出来,保存到私服中,也可以叫私服仓库;那私服仓库的东西从哪里来呢——中央仓库。
  • 项目构建

1.1.4maven的安装步骤?

IDEA默认集成了maven

  1. maven下载地址:https://maven.apache.org/download.cgi
  2. IDEA工具:2020版本以前的支持maven3.6是可以的;2021,2022支持maven3.8.5版本
  3. 安装和配置环境
    maven环境安装和配置

1.2Maven基础概念

1.2.1仓库

用于存储资源,包含各种jar包

仓库分类:

  1. 本地仓库:自己电脑上存储的资源,连接远程仓库获取资源
  2. 远程仓库:非本计算机电脑上的仓库,本地仓库提供资源
    • 中央仓库:Maven团队维护,存储所有资源的仓库
    • 私服:部分/公司范围内存储资源的仓库,从中央仓库获取资源

私服的作用:

  • 保存具有版权的资源,包含购买的或者自主研发的jar(中央仓库中的jar都是开源的,不能存储具有版权的资源)
  • 一定范围内共享资源,仅对内部开放,不对外共享。

1.2.2坐标

什么是坐标:maven中的坐标是用与描述仓库中资源的位置
坐标的主要组成:

  • groupID:定义当前Maven项目隶属组织名称(通常是域名的反写,例如:org.mybatis)
  • artifactID:定义当前Maven项目的名称(通常是模块名称,例如CRE)
  • version:定义当前项目版本号

Maven坐标的作用:

  • 使用唯一标识:唯一性定位资源位置,通过表示可以将资源的识别与下载工具交由机器完成

1.3依赖管理

1.3.1依赖管理常用的标签

配置依赖:事例如下

<dependencies>
      <dependency>
          <groupId>org.springframework</groupId>
          <artifactId>spring-context</artifactId>
          <version>5.3.10</version>
    </dependency>
</dependencies>

1.3.2依赖传递

  • 直接依赖:当前项目中通过依赖配置建立的依赖关系
  • 间接依赖:被依赖资源的资源如果依赖其他的资源,当前项目间接依赖其他资源
    文宇解说: 两个项目,第一个项目依赖了项目二,当项目二添加了一个依赖,这个资源也会跑到项目一;

1.3.3依赖传递的冲突问题

假设项目一依赖了junit 4.14版本,同时项目一也依赖了项目二,项目二依赖了junit4.13版本,根据依赖的传递性,项目一也就同时依赖了junit4.13版本和junit4.14版本;那问题来了,项目一依赖的是哪一个版本呢?这就是依赖传递的冲突问题。

解决方式:

  • 路径优先:当依赖出现相同的资源时,层级越深,优先级越低,层级越浅,优先级越高。
  • 声明优先:当资源在相同层级已离开时配置顺序靠前的覆盖配置顺序靠后的。
  • 特殊优先:当统计配置相同资源的不同版本,后配置的覆盖优先配置的。
    在这里插入图片描述

1.3.4可选依赖

  • 可选依赖是指对外隐藏当前所有依赖的资源----不透明
<dependency>
    <groupId> junit</ groupId>
    <artifactId>junit</ artifactId>
    <version>4.12</version>
    <optional> true</ optional>
</dependency>

1.3.5排除依赖

  • 排除依赖指主动断开依赖的资源,被排除的资源无需指定版本----不需要
<dependency>
    <groupId> junit</ groupId>
    <artifactId>junit</artifactId
    <version>4.12 </version>
    <exclusions >
    <exclusion>
        <groupId>org . hamcrest</ groupId>
        <artifactId>hamcrest- core</ artifactId>
    </ exclusion>
    </exclusions>
</ dependency>

1.3.6依赖范围

  • 依赖的jar默认情况下可以在任何地方使用,可以通过scope标签设定器作用范围
  • 作用范围
    • 主程序范围有效(main文件范围内)
    • 测试程序范围有效(test文件夹范围有效)
    • 是否参与打包(package指令范围内)
依赖范围对于编译
classpath
有效
对于测试
classpath
有效
对于运行时
classpath有效
例子
compileYYYspring-context
test-Y-junit
providedYY-servlet-api
runtime-YYjdbc驱动
systemYY-本地,maven仓库之外的类库

依赖范围的传递性
在这里插入图片描述

1.4生命周期与插件

compile(编译)–>test(测试)—>package(打包)—>install(安装)

1.4.1项目构建生命周期

Maven对项目构建的生命周期划分为3套

  1. clean:清理工作
  2. default:核心工作,例如编译,测试,打包,部署等
  3. site:产生报告,发布站点等

插件:

  • 插件与生命周期内的阶段绑定,在执行到对应生命周期时执行对应的插件功能
  • 默认maven在各个生命周期上绑定由预设的功能
  • 通过插件可以自定义其他功能,事例如下:
    Tomcat7的插件:
<!--构建-->
  <build>
    <!--设置插件-->
    <plugins>
      <!--具体的插件-->
      <plugin>
        <groupId>org. apache . maven. plugins</ groupId>
        <artifactid>maven- source -plugin</ artifactId>
        <version>2.2.1</version>
        <executions>
          <execution>
            <goals>
              <goal>jar</goal>
            </goals>
            <phase>generate-test-resources</phase>
          </execution>
        </executions>
      </plugin>
    </plugins>
  </build>

2 项目实例:使用IDEA创建一个web的maven工程

步骤

1.打开IDEA,新建project,如图所示。

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
完成后的结构如下:
在这里插入图片描述

2.设置test(测试),resources(资源文件夹)文件夹。

在这里插入图片描述

在这里插入图片描述
新建文件夹如下图所示
在这里插入图片描述

为文件夹配置main 文件下的java 设置成 source文件夹,resource蛇者成resource文件夹,test文件夹下的Java设置成Tests文件夹,resources设置成Test resources文件夹,如下图所示。完成后点击ok.
在这里插入图片描述

3.编写index.jsp

<html>
<body>
<h2>Hello Maven!</h2>
</body>
</html>

4.配置pom.xm文件

添加tomcat服务器插件,进入mvnrepository,搜索tomcat maven,查找到tomcat maven包

在这里插入图片描述

进入这个包的第一个,使用2.1版本,单击进入这个版本,复制插件代码。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
配置pom.xml文件,删除一些不需要的东西,添加Tomcat7插件,代码如下;

<?xml version="1.0" encoding="UTF-8"?>

<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>

  <groupId>com.hai</groupId>
  <artifactId>Maven_webProject</artifactId>
  <version>1.0-SNAPSHOT</version>
  <packaging>war</packaging>

  <name>Maven_webProject Maven Webapp</name>
  <!-- FIXME change it to the project's website -->
  <url>http://www.example.com</url>
  
  <dependencies>
  </dependencies>
  
  <build>
    <plugins>
      <plugin>
        <!-- https://mvnrepository.com/artifact/org.apache.tomcat.maven/tomcat7-maven-plugin -->
        <groupId>org.apache.tomcat.maven</groupId>
        <artifactId>tomcat7-maven-plugin</artifactId>
        <version>2.1</version>
      </plugin>
    </plugins>
  </build>

</project>

刷新maven后可以看到tomcat7插件,如下图。
在这里插入图片描述
在这里插入图片描述

5.启动运行

选择tomcat7的tomcat7:run的运行命令,服务器就启动了,单击运行的连接,可以在浏览器上看到运行结果。
在这里插入图片描述
在这里插入图片描述
结果:
在这里插入图片描述

6.配置运行(扩展)

单击Add configuration 添加maven运行,配置命令为Tomcat7:run,点击IDEA的运行,就可以启动服务器。配置如下。
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值