Maven安装与简介

Maven

Maven简介

学maven首先记住一句话,约定大于配置

Maven是什么
  • 本质是一个项目管理工具,将项目开发和管理过程抽象成一个项目对象模型(pom)
  • POM(Project Object Model):项目对象模型
  • pom.xml—>项目管理模型------>依赖管理(Dependency)—>本地仓库—>私服仓库—>中央

在这里插入图片描述

Maven有什么用
  • 项目构建:提供标准化,跨平台的自动化项目构建方式
  • 依赖管理:方便快捷的管理项目依赖的资源包,避免资源间的版本冲突问题
  • 统一开发结构:提供标准的,统一的项目结构

下载与安装

  • 官网:http://maven.apache.org/
  • 下载地址:http://maven.apache.org/download.cgi
Maven环境配置
  • 依赖java,所以需要JAVA_HOME
  • 设置Maven自身的运行环境,需要配置MAVEN_HOME

Maven基础概要

仓库

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

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-MQbjoV13-1692692340176)(Maven/仓库.png)]

  • 仓库分类
    • 本地仓库:自己电脑上的存储资源的仓库,连接远程仓库获取资源
    • 远程仓库:非本机上的仓库,为本地仓库提供资源
      • 中央仓库:由Maven团队维护,存储所有开源资源的仓库
      • 私服:部门/公司范围内存储资源的仓库,从中央仓库中获取资源
  • 私服的作用
    • 保护具有版权的资源,包含购买或者自主研发的jar
      • 中央仓库中的jar都是开源的,不能存储具有版权的资源
    • 一定范围内共享资源,就对内开放,不对外开放
坐标GAV
  • 坐标:Maven中的坐标主要用于描述仓库中资源的位置,记住这个网站

    • https://mvnrepository.com/
  • Maven主要组成部分

    • groupId:定义当前项目隶属的组织名称(通常是域名反写 例如com.zhima)
    • artifactId:定义该项目的项目名称(通常是模块名称)
    • version:定义当前项目的版本号
    • packaging:定义该项目的打包方式
  • 作用:使用唯一标识,唯一性定位资源位置,通过该标识可以将资源的识别与下载工作交由机器完成

本地仓库配置

maven默认的本地仓库目录在c盘用户文件夹下的.m2文件夹中,如有需要,可在配置文件中自行配置。

在这里举个例子,我需要将D:\APP\Maven\mvn-repo该目录作为我的maven本地仓库的路径。

  1. 创建mvn-repo文件夹,在此文件夹中创建repository目录
  2. 在maven安装根目录下的config文件夹下找到settings.xml找到以下配置所在,照着以下配置修改
//这里改成自己需要配置的仓库目录
<localRepository>D:\APP\Maven\mvn-repo\repository</localRepository>

//阿里云的镜像服务器,会加快jar包的下载速度,直接复制即可
<mirrors>
    <id>nexus-aliyun</id>
    <mirrorOf>central</mirrorOf>
    <name>Nexus aliyun</name>
    <url>http://maven.aliyun.com/nexus/content/groups/public</url>
</mirrors>
  1. 将此份配置文件保存并复制到mvn-repo文件夹中

全局setting(maven的config中的setting文件)和用户setting(尽量和全局setting一样)区别

  • 全局setting定义了当前计算机中Maven的公共配置
  • 用户setting定义了当前用户的配置

创建maven项目

手工(用的很少,一般都是直接使用idea创建)

普通maven工程

mvn archetype:generate
	-DgroupId = com.zhima
	-DartifactId = project
	-DarchetypeArtifactId = maven-archetype-quickstart
	-Dversion = 0.0.1-snapshot
	-DinteractiveMode = false

web工程

mvn archetype:generate
	-DgroupId = com.zhima
	-DartifactId = project
	-DarchetypeArtifactId = maven-archetype-webapp
	-Dversion = 0.0.1-snapshot 
	-DinteractiveMode = false

依赖管理

依赖配置
<!--设置当前项目所需要的依赖-->
<dependencies>
    <!--设置具体的依赖-->
    <dependency>
        <!--依赖所属的群组id-->
        <groupId>junit</groupId>
        <!--依赖所属的项目id-->
        <artifactId>junit</artifactId>
        <!--依赖的版本号-->
        <version>4.13</version>
    </dependency>
</dependencies>
依赖传递

依赖具有传递性

  • 直接传递:在当前项目中,通过依赖配置建立的依赖关系
  • 间接关系:被依赖的资源如果依赖其他的资源,当前项目间接依赖其他项目

依赖冲突

  • 路径优先:当依赖中出现相同的资源时,层次越深,优先级越低,层次越浅,优先级越高
  • 声明优先:当资源在相同层次被依赖时,配置顺序靠前的覆盖顺序靠后的
  • 特殊优先:当同级配置了相同资源的不同版本,后配置的覆盖先配置的
可选依赖(主动表示断开)
    <dependencies>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.13</version>
            <!--不透明-->
        	<optional>true</optional>
        </dependency>
    </dependencies>
排除依赖(主动断开)

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

    <dependencies>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.13</version>
            <exclusions>
            	<exclusion>
                	<groupId>org.hamcrest</groupId>
                    <artifactId>hamcrest-core</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
    </dependencies>
依赖范围
<dependencies>
    <dependency>
        <groupId>junit</groupId>
        <artifactId>junit</artifactId>
        <version>4.13</version>
        <scope>test</scope>
    </dependency>
</dependencies
  • 依赖的jar包默认情况下可以在任何地方使用,可以通过scope标签设定起作用范围
  • 作用范围
    • 主程序范围有效(main文件范围内)
    • 测试范围有效(test文件夹范围)
    • 是否参与打包(package指令范围内)
scope主代码测试代码打包示例
compileYYYlog4j
testYjunit
providedYYservlet-api
runtimeYjdbc

依赖范围的传递性

  • 带有依赖范围的资源在进行传递的时候,作用范围将会受到影响
行是直接依赖,列是间接依赖compiletestprovidedruntime
compilecompiletestprovidedruntime
test
provided
runtimeruntimetestprovidedruntime

生命周期以及插件

生命周期
  • Maven对项目构建的生命周期划分为3套
    • clean:清理工作
    • default:核心工作,例如编译、测试、打包、部署等
    • site:产生报告,发布站点等

clean生命周期

  • pre-clean 执行一些需要在clean之前立即完成的工作
  • clean 移除所有上一次构件生成的文件
  • post-clean 执行一些需要在clean之后立即完成的工作

default生命周期

site生命周期

  • pre-site 执行一些需要在生成站点文档之前完成的工作
  • site 生成站点文档
  • post-site 执行一些需要在生成站点文档之后完成的工作,并且为部署做准备工作
  • site-deploy 将生成的站点文档部署到特定服务器上面去
插件
  • 插件与生命周期内的阶段绑定,在执行到对应生命周期时执行对应的插件功能
  • 默认maven在各个生命周期上绑定有预设的功能
  • 通过插件可以自定义其他功能
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

芝麻\n

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值