Maven的介绍和使用

Maven的作用

项目构建

依赖管理:避免资源间版本冲突问题

统一开发结构:提供统一的项目结构

Maven的使用

下载完压缩包之后放在合适的目录下,其中apache-maven-3.8.8文件夹是安装的maven,下面的repository是本地仓库,其中要修改setting.xml下的仓库路径,设置阿里云镜像。

将这里的路径改为自己设置的 repository 仓库的路径。

这个<mirror>写在<mirrors>中,在注释里面会有mirror的模板。

Maven项目构建命令

手动创建

使用mvn开头,后面添加功能参数,可以一次执行多个命令,使用空格分隔

mvn compile #编译

mvn clena #清理

mvn test #测试

mvn package #打包

mvn install #安装到本地仓库

插件创建

依赖管理

依赖传递
  • 依赖有传递性
    • 直接依赖:在当前项目中通过配置建立的依赖关系
    • 间接依赖:被依赖的资源如果依赖其他资源,当前项目间接依赖其他资源
  • 路径优先:当依赖中出现相同资源时,层级越深,优先级越低,层级越浅,优先级越高
  • 声明优先:当资源在相同层级被依赖时,配置位置靠前的覆盖废纸顺序靠后的
  • 特殊优先:当统计配置了相同层级的不用版本,后配置的覆盖先配置的
可选依赖

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

复制代码
<dependency>
    <groupId>com.google.code.gson</groupId>
    <artifactId>gson</artifactId>
    <version>2.8.9</version>
\<optional\>true\</optional\>
</dependency>
排除依赖

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

复制代码
<dependency>
    <groupId>com.google.code.gson</groupId>
    <artifactId>gson</artifactId>
    <version>2.8.9</version>
    \<exclusions\>
\<exclusion\>
\<groupId\>junit\</groupId\>
\<artifactId\>junit\</artifactId\>
\</exclusion\>
\</exclusions\>
</dependency>
依赖范围

依赖的jar包默认情况可以在任何地方使用,可以通过scope标签设定其作用范围

作用范围:

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

生命周期和插件

clean:清理工作

default:核心工作,例如编译,测试,打包,部署等

site:产生报告,发布站点等

插件

  • 插件与生命周期内的阶段绑定,在执行到对应生命周期时执行对应的插件功能
  • 默认maven在各个生命周期上有预设的功能
  • 通过插件可以自定义其他功能
相关推荐
泡海椒5 分钟前
JQuick-Excel 字段映射实战:用 MAPPING 固化 Excel 表头与业务字段契约
xml·java·开发语言·excel
梦幻通灵11 分钟前
IDEA 实用快捷键【持续更新】
java·ide·intellij-idea
南归北隐11 分钟前
Spring AI Alibaba Graph框架实现Tools工具调用
java·后端·spring·spring ai·spring ai tools
开开心心就好19 分钟前
视频模糊怎么修复?免费工具支持批量处理
java·前端·人工智能·智能手机·pdf·excel
w_zero_one1 小时前
链表(3)
java·数据结构·算法
资深技术分享员1 小时前
遗留系统——把“改不动的老系统“接过来
java·服务器·数据库
江湖有缘1 小时前
Docker实战 | 使用Docker部署Bibliotheca阅读习惯管理工具
java·docker·容器
艾莉丝努力练剑1 小时前
【AI大模型接入SDK】ChatSDK:CMake构建静态库完整实现
java·开发语言·网络·c++·人工智能·学习·sdk
百度一下吧1 小时前
umi后台管理项目实战:从工程搭建到生产构建
java·前端·javascript
Joe_Wang51 小时前
【从0到1学习JVM · 14】堆内存各区域分工与Xms和Xmx设为一样的真相
java·jvm·学习·垃圾回收