06_Java项目管理工具Maven基础

1. 概述

1.1 什么是Maven

在传统的项目管理中项目是存在很大问题的,例如jar包不统一甚至不兼容,使得项目中的jar依赖包库很混乱,又或者说对于项目工程的升级维护操作很繁琐,又或者说不同IDE下项目结构布置等问题

由此,Maven诞生了

那么,Maven到底是什么呢:

  • 本质:Maven本质上是一个项目管理工具,将项目开发与管理过程抽象成了一个项目对象模型(POM)
  • POM(Project Object Model) : 项目对象模型:

在这里插入图片描述

1.2 Maven的作用

  • 项目构建:提供了标准的,跨平台的自动化项目构建方式(编译,测试,打包,发布…)

  • 依赖管理机制:方便快捷的管理项目依赖的资源(jar包),避免资源间的版本冲突问题

    即我们不用再一个一个jar包导入了,直接配置文件中完成依赖管理即可

    当项目在pom.xml配置文件中使用坐标引入依赖jar包之后,首先会在本地仓库查找是否有对应的jar包

    如果有,则直接引用

    如果 没有,则从远程仓库下载对应jar包到本地仓库中再引用

    如果远程仓库没有,则从中央仓库查找,下载至远程仓库,再从远程仓库下载至本地仓库

  • 统一了开发结构:提供标准,统一的项目结构

1.3 Maven工程目录结构

在这里插入图片描述

同时与src同级的还有一个pom.xml核心配置文件

1.4 Maven下载与安装

官网直接下载压缩包,解压压缩包即安装成功

官网:http://maven.apache.org/

也可以直接打开官网的下载地址:http://maven.apache.org/download.cgi

同时建议不要安装太新版本,会与IDEA版本冲突,如果使用IDEA2021建议安装Maven3.8.1及以下

注意:

安装完Maven需要配置Maven的环境变量MAVEN_HOME

配置完在命令行窗口输入mvn测试是否安装与配置成功

配置错误截图:

在这里插入图片描述

配置成功截图:

在这里插入图片描述

1.5 Maven项目构建命令

Maven构建命令由mvn开头,后面跟功能参数,一次可以执行多个命令,命令间用空格分隔

常用命令:

在这里插入图片描述

其中的打包,Java工程会被打成jar包,web工程会被打成war包

1.6 Maven生命周期

  • Maven构建项目的生命周期是指一次构建过程中经历了多少个事件

  • Maven对项目构建的生命周期分为三套:

  • clean:清理工作

    命令顺序:pre-clean=>clean=>post-clean

    其中pre-命令指执行完成该操作前完成的工作

    post-命令指执行完该操作(clean)后立刻完成的工作

  • default:核心工作,包括编译,测试,打包,安装等

    命令顺序:compile=>test=>package=>install

    实际上一个生命周期包含的命令远不止这些

  • site:产生报告,发布站点等(即发布项目,一般不使用Maven发布项目)

    命令顺序:pre-site=>site=>post-site

  • 注意:在同一生命周期内,执行后面的命令,前面的所有命令都会被自动执行

2. Maven基本概念

2.1 仓库

仓库:用于存放资源,包含各种jar包

仓库分类如图:

在这里插入图片描述

分类:

  • 本地仓库:自己电脑上存储资源的仓库,可以连接远程仓库获取资源

  • 远程仓库分为中央仓库与私服:

    中央仓库:是由Maven团队维护的全球唯一的仓库,存储所有资源的仓库

    仓库地址:https://repo.maven.apache.org/maven2/

    私服:是在部门/公司范围内存储资源的仓库,也要从中央仓库中获取资源

    示例(阿里云镜像仓库):http://maven.aliyun.com/nexus/content/groups/public

  • 私服的作用:

    中央仓库中的jar包都是开源的,不存放具有版权的资源,因此可以在私服存放具有版权的资源,例如购买的或者自主研发的jar包

    同时可以在一定范围内共享资源,仅对内开发不对外共享

2.2 坐标

  • 概念:用于描述仓库中资源的具体位置

  • 组成:主要组成部分有四部分:

    groupId:定义当前Maven项目隶属组织名称(通常使用域名反写,如org.mybatis)

    artifactId:定义当前Maven项目名称(通常为模块名)

    version:版本号

    packaging:定义该项目的打包方式(主要是前面三个)

    例如groupId:com.alibaba

    artifactId:druid

    version:1.1.12

    则Maven会在远程仓库中根据这个坐标下载对于jar包至本地仓库中,在本地仓库中创建目录:com.alibaba.druid.1.1.12

    并在这个目录下存放这个坐标对应的jar包

    接着我们通过在pom.xml下配置以下信息即可导入驱动jar包:

    <dependency>
        <groupId>com.alibaba</groupId>
        <artifactId>druid</artifactId>
        <version>1.1.12</version>
    </dependency>
    
  • 作用:

    是唯一标识,可以唯一定位资源位置

    通过这个标识可以将资源的识别与下载工作交给计算机完成

2.3 本地仓库配置

本地仓库配置即指将Maven启动后下载的资源保存的位置

默认位置:

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

默认会放在电脑登录用户名所在目录下的.m2文件夹中

我们一般在D盘中maven的安装目录里面定义一个repository文件夹,将资源保存位置设置为这个repository文件夹

在conf下的setting.xml中的localRepository标签中配置:

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

2.4 远程仓库配置

远程仓库是Maven默认连接的仓库位置,为中央仓库

默认配置:

<repositories> 
    <repository> 
        <id>central</id> 
        <name>Central Repository</name> 
        <url>https://repo.maven.apache.org/maven2</url> 
        <layout>default</layout>
        <snapshots> 
            <enabled>false</enabled>
    	</snapshots>
    </repository>
</repositories>

2.5 镜像仓库配置

我们一般会将远程仓库连接为阿里巴巴的镜像仓库,下载速度会更快

在conf下的setting文件中配置阿里云镜像仓库:

<mirrors> 
    <!-- 配置具体的仓库下载镜像--> 
    <mirror>
        <!-- 这个镜像的唯一标识,用于区分不同的mirror元素 --> 
        <id>nexus-aliyun</id> 
        <!-- 对哪个仓库进行镜像,即替代哪个仓库 --> 
        <mirrorOf>central</mirrorOf>
		<!-- 镜像名称--> 
        <name>Nexus aliyun</name>
		<!-- 镜像URL --> 
        <url>http://maven.aliyun.com/nexus/content/groups/public</url>
	</mirror>
</mirrors>

3. IDEA配置Maven

3.1 修改Maven配置

在IDEA中的设置下搜索Maven,修改Maven为本地安装的Maven,并修改配置文件与本地仓库

3.2 创建Maven项目

创建模块时选择Maven即可,创建模块时可修改坐标信息

pom.xml中有一个<packaging>标签,用于指定打包方式,默认为jar,web项目中需要打成war包

3.3 导入Maven项目

在右侧面板中的Maven点击加号,选择项目的pom.xml文件即可自动导入

如果右侧面板没有Maven:

view=>Appearance=>Tool Window Bars

同时在右侧Maven面板下的插件中可以直接点击执行编译安装打包等等命令

3.4 Maven Helper插件

安装此插件后,在Maven模块中右键下的Run Maven可以直接执行编译安装打包等等命令,同时可以进行断点调试

4. 依赖管理

4.1 导入jar包

使用依赖管理的坐标导入jar包步骤:

  1. 在pom.xml下编写<dependencies>标签
  2. 在<dependencies>中编写<dependency>标签,使用这个标签引入坐标
  3. 在<dependency>中定义坐标的<groupId>,<artifactId>,<version>
  4. 点击Maven的刷新按钮

示例:导入mysql的连接驱动jar包:

<dependencies>
    <dependency>
    	<groupId>mysql</groupId>
    	<artifactId>mysql-connector-java</artifactId>
    	<version>5.1.34</version>
    </dependency>
</dependencies>

驱动jar包的坐标获取方法:

百度或者bing搜索,例如搜索mysql Maven,有一个网页会提供mysql驱动jar包在Maven中的坐标,我们可以根据下载频率选择一个jar包

下载失败没有下载到jar包产生无法解析问题的解决方法:

删除目录文件夹重新下载

自己仓库有时快速导入jar包:

alt+ins,选择依赖项,搜索需要的jar包名字

4.2 依赖范围

可以通过在<dependency>标签中的<scope>标签设置对应jar包的作用范围

作用范围有:编译环境,测试环境,运行环境等

依赖范围如图:

在这里插入图片描述

  • 其中编译环境有效指在工程结构下的java目录下有效

  • 测试环境指在test目录下有效

  • provided环境指只在编译与测试环境有效,同时servlet的jar包必须声明为这种形式,否则因为tomcat自带这个jar包,在打成war包之后会报错

  • runtime指在测试和运行环境下有效,在编译环境下无效,JDBC的驱动jar包就可以设置这种环境,因为实际上驱动Driver是在运行时才会去找的,而我们写代码时的Connection等对象都是sql包下的,等到运行的时候他们才会去找JDBC驱动jar包

    显得专业一点,但是不这样子配也无所谓

  • 运行环境无效的jar包在被打包时不会被打到项目的lib目录下

  • 其中scope的默认值为:compile

5. Tomcat与Maven

通过在Maven中导入(内置)Tomcat可以使部署服务器速度更快

插件maven模块时选择从原型创建,选择web原型

如图:

在这里插入图片描述

接着将目录补充完整

再接着导入tomcat插件,使得部署项目更加便捷

步骤:

  1. 在pom.xml中添加Tomcat插件(alt+ins快捷键导入即可):
<!-- 项目构建用的东西 -->
    <build>
        <plugins>
            <!-- tomcat插件-->
            <plugin>
                <groupId>org.apache.tomcat.maven</groupId>
                <artifactId>tomcat7-maven-plugin</artifactId>
                <version>2.2</version>
                <configuration>
                    <!-- 修改端口号 -->
                    <port>8080</port>
                    <!-- 修改虚拟目录 -->
                    <path></path>
                </configuration>
            </plugin>
        </plugins>
    </build>
  1. 右键项目run Maven下的tomcat7:run
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值