Maven基础

前言:本文简单介绍了Maven的基本用法。学习Maven可以提高对Java项目的开发效率,解决对各种Jar包的管理问题,是一个强大的项目管理工具。

作用

  • 项目构建:提供标准的、跨平台的自动化项目构建方式
  • 依赖管理:方便快捷的管理项目依赖的资源(jar包)
  • 统一开发结构:提供标准的、统一的项目结构

安装Maven

Windows中安装Maven

Linux中安装Maven

基础概念

仓库

  • 仓库:用于存储资源,包含各种jar包
  • 仓库分类
    • 本地仓库
    • 远程仓库
  • 私服的作用
    • 保存具有版权的资源,包含购买或自主研发的jar
      • 中央仓库的jar包都是开源的,不能存储具有版权的资源
    • 一定范围内共享资源,仅对内部开放,不对外共享

坐标

用于描述仓库中资源的位置
坐标主要组成:

  • groupld:定义当前Maven项目隶属组织名称(通常是域名反写)
  • artifactld:定义当前Maven项目名称(通常是模块名称)
  • version:定义当前项目版本号
  • packaging:定义该项目的打包方式

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

仓库配置

配置本地仓库

找到Maven的安装目录,找到{Maven_Path}\conf\settings.xml,将文件里面的localRepository修改为自己设置的本地仓库

<localRepository>自定义仓库路径</localRepository>
配置镜像仓库

阿里云远程仓库指南

<mirrors>
    <!-- 阿里云远程仓库 -->
    <mirror>
        <id>aliyunmaven</id>
        <mirrorOf>central</mirrorOf>
        <name>阿里云公共仓库</name>
        <url>https://maven.aliyun.com/repository/public</url>
    </mirror>
</mirrors>
全局setting与用户setting区别
  • 全局setting定义了当前计算机中Maven的公共配置({Maven_Path}\conf\settings.xml)
  • 用户setting定义了当前用户的配置({localRepository_Path\settings.xml}与Repository文件夹同级)

第一个Maven项目(手工制作)

Maven项目构建命令

mvn compile		# 编译
mvn clean		# 清理
mvn test		# 测试
mvn package		# 打包
mvn install		# 安装到本地仓库

插件创建工程

创建工程模板
mvn archetype:generate
	-Dgrould={project-packaging}
	-Dartifactld={project-name}
	-DarchetypeArtifactld=maven-archetype-quickstart
	-DinteractiveMode=false
创建java工程
mvn archetype:generate
	-Dgrould={project-packaging}
	-Dartifactld={project-name}
	-DarchetypeArtifactld=maven-archetype-quickstart
	-Dversion=0.0.1-snapshot
	-DinteractiveMode=false
创建web工程
mvn archetype:generate
	-Dgrould={project-packaging}
	-Dartifactld={project-name}
	-DarchetypeArtifactld=maven-archetype-webapp
	-Dversion=0.0.1-snapshot
	-DinteractiveMode=false

第一个Maven项目(IDEA制作)

依赖管理

依赖配置

查询jar包:Maven官方仓库

依赖指当前项目运行所需的jar,一个项目可以设置多个依赖

<!-- 设置当前项目所依赖的所有jar -->
<dependencies>
    <!-- 设置具体依赖 -->
    <dependency>
        <!-- 依赖所属群组id -->
        <groupld></groupld>
        <!-- 依赖所属项目id -->
        <artifactld></artifactld>
        <!-- 依赖版本号 -->
        <version></version>
    </dependency>
</dependencies>

依赖传递

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

冲突问题

  • 路径优先:当依赖中出现相同的资源时,层级越深,优先级越低,层级越浅,优先级越高
  • 声明优先:当资源在相同层级被依赖时,配置顺序靠前的覆盖配置顺序靠后的
  • 特殊优先:当同级配置了相同资源的不同版本,后配置的覆盖先配置的
可选依赖(不透明)

可选依赖指对外隐藏当前所依赖的资源——不透明

<dependencies>
    <dependency>
        <groupld></groupld>
        <artifactld></artifactld>
        <version></version>
        <!-- 可选依赖 -->
        <optional>true</optional>
    </dependency>
</dependencies>
排除依赖(不需要)

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

<dependencies>
    <dependency>
        <groupld></groupld>
        <artifactld></artifactld>
        <version></version>
        <!-- 设置当前项目所排除依赖的所有jar -->
        <exclusions>
            <!-- 设置具体排除依赖 -->
        	<exclusion>
            	<groupld></groupld>
                <artifactld></artifactld>
            </exclusion>
        </exclusions>
    </dependency>
</dependencies>

依赖范围

依赖的jar默认期刊可以在如何地方使用,可以通过scope标签设定其作用范围

作用范围:

  • 主程序范围有效(main文件夹范围内)
  • 测试程序范围有效(test文件夹范围内)
  • 是否参与打包(package指令范围内)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值