Maven
1、Maven 是什么
是一款项目管理的工具
2、Maven 的作用
依赖管理,项目构建
3、POM模型
把一个项目,以一个对象的形式进行管理。
4、仓库
存储资源,包含各种jar包
本地仓库
远程仓库
中央
私服
私服的作用
保护版权,自用
5、坐标
Maven中坐标用于描述仓库中资源的位置 网站
Maven坐标主要组成
groupld:定义当前 Maven 项目隶属组织名称(通常域名反写,例:org.mybitas)
artifactld:定义当前Maven项目名称(通常是模块名称,例如CRM、SMS)
version:定义当前项目版本号
查找坐标 https://mvnrepository.com
作用:
使用唯一坐标,唯一性定位资源位置,通过该标识可以将资源的识别与下载工作交由机器完成。
6、仓库配置
本地配置
远程配置
7、项目结构
src 源文件
main 主程序
test 测试程序
java Java源程序
resources 配置文件
8,项目构建
mvn compile 编译
mvn clean 清理
mvn test 测试
mvn package 打包
mvn install 打包存入本地仓库
存放地址即文件目录为:groupId + artifactld + version
模板创建工程:
mvn archetype:generate
-DgroupId={project-packaging}
-DartifactId={project-name}
-DarchetypeArtifactId=maven-archetype-quickstart
-DinteractiveMode=false
例:创建java工程:
mvn archetype:generate
-DgroupId=com.itf
-DartifactId=java-project
-DarchetypeArtifactId=maven-archetype-quickstart
-Dversion=0.0.1-snapshot
-DinteractiveMode=false
创建web工程:
mvn archetype:generate -DgroupId=com.itheima -DartifactId=web-project
-DarchetypeArtifactId=maven-archetype-webapp -Dversion=0.0.1-snapshot
-DinteractiveMode=false
9、依赖
依赖传递
有直接依赖和间接依赖
依赖传递冲突问题
路径优先:层级越深,优先级越低
声明优先:层级相同时,配置顺序靠前的优先级高
特殊优先:当同级配置了相同资源的不同版本,后配置的优先级高
可选依赖
对外隐藏当前依赖的资源——不透明
<optional> true </optional>
排除依赖
主动断开依赖的资源,被排除的资源无需指定版本——不需要
<exclusions>
<exclusion>
<groupId>org.hamcrest</groupId>
<artifactId>hamcrest-core</artifactId>
</exclusion>
</exclusions>
依赖范围
依赖的 jar 默认情况可以在任何地方使用,可以通过 scope 标签设定作用范围
作用范围
主程序范围内有效(main文件夹范围内)
测试程序范围内有效(test文件夹范围内)
是否参与打包(packgage指令范围内)
scope | 主代码 | 测试代码 | 打包 | 范例 |
compile(默认) | Y | Y | Y | log4j |
test | Y | junit | ||
provided | Y | Y | servlet-api | |
runtime | Y | jdbc |
9、生命周期与插件
clean、default、site
插件与生命周期内的阶段绑定,执行到对应生命周期时执行对应插件功能。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理