延吉网站建设depawo,荣耀手机商城,网站的栏目设置,广州网络推广万企在线声明#xff1a;本文来源于黑马程序员PDF讲义
做为一名Java开发工程师#xff0c;后端 Web开发技术是我们学习的重点#xff0c;后端Web开发技术的学习#xff0c;我们会先学习Java项目的构建工具#xff1a;Maven
初识Maven
Maven是Apache旗下的一个开源项目#xff…声明本文来源于黑马程序员PDF讲义
做为一名Java开发工程师后端 Web开发技术是我们学习的重点后端Web开发技术的学习我们会先学习Java项目的构建工具Maven
初识Maven
Maven是Apache旗下的一个开源项目是一款用于管理和构建java项目的工具。
使用Maven能够做什么呢
1. 依赖管理 2. 统一项目结构 3. 项目构建 当使用maven进行项目依赖(jar包)管理则很方便的可以解决这个问题。 我们只需要在maven项目 的pom.xml文件中添加一段如下图所示的配置即可实现。 !-- 依赖声明 --dependencyManagementdependencies!-- SpringBoot的依赖配置--dependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-dependencies/artifactIdversion2.5.15/versiontypepom/typescopeimport/scope/dependency!-- 阿里数据库连接池 --dependencygroupIdcom.alibaba/groupIdartifactIddruid-spring-boot-starter/artifactIdversion${druid.version}/version/dependency!-- 解析客户端操作系统、浏览器等 --dependencygroupIdeu.bitwalker/groupIdartifactIdUserAgentUtils/artifactIdversion${bitwalker.version}/version/dependency!-- pagehelper 分页插件 --dependencygroupIdcom.github.pagehelper/groupIdartifactIdpagehelper-spring-boot-starter/artifactIdversion${pagehelper.boot.version}/version/dependency!-- 获取系统信息 --dependencygroupIdcom.github.oshi/groupIdartifactIdoshi-core/artifactIdversion${oshi.version}/version/dependency!-- Swagger3依赖 --dependencygroupIdio.springfox/groupIdartifactIdspringfox-boot-starter/artifactIdversion${swagger.version}/versionexclusionsexclusiongroupIdio.swagger/groupIdartifactIdswagger-models/artifactId/exclusion/exclusions/dependency!-- io常用工具类 --dependencygroupIdcommons-io/groupIdartifactIdcommons-io/artifactIdversion${commons.io.version}/version/dependency!-- excel工具 --dependencygroupIdorg.apache.poi/groupIdartifactIdpoi-ooxml/artifactIdversion${poi.version}/version/dependency!-- velocity代码生成使用模板 --dependencygroupIdorg.apache.velocity/groupIdartifactIdvelocity-engine-core/artifactIdversion${velocity.version}/version/dependency!-- collections工具类 --dependencygroupIdcommons-collections/groupIdartifactIdcommons-collections/artifactIdversion${commons.collections.version}/version/dependency!-- 阿里JSON解析器 --dependencygroupIdcom.alibaba.fastjson2/groupIdartifactIdfastjson2/artifactIdversion${fastjson.version}/version/dependency!-- Token生成与解析--dependencygroupIdio.jsonwebtoken/groupIdartifactIdjjwt/artifactIdversion${jwt.version}/version/dependency!-- 验证码 --dependencygroupIdpro.fessional/groupIdartifactIdkaptcha/artifactIdversion${kaptcha.version}/version/dependency!-- 定时任务--dependencygroupIdcom.xxxx/groupIdartifactIdxxxx-quartz/artifactIdversion${xxxx.version}/version/dependency!-- 代码生成--dependencygroupIdcom.xxxx/groupIdartifactIdxxxx-generator/artifactIdversion${xxxx.version}/version/dependency!-- 核心模块--dependencygroupIdcom.xxxx/groupIdartifactIdxxxx-framework/artifactIdversion${xxxx.version}/version/dependency!-- 系统模块--dependencygroupIdcom.xxxx/groupIdartifactIdxxxx-system/artifactIdversion${xxxx.version}/version/dependency!-- 通用工具--dependencygroupIdcom.xxxx/groupIdartifactIdxxxx-common/artifactIdversion${xxxx.version}/version/dependency!-- xxxxM模块--dependencygroupIdcom.xxxx/groupIdartifactIdxxxx-main/artifactIdversion${jcdm.version}/version/dependencydependencygroupIdorg.apache.commons/groupIdartifactIdcommons-pool2/artifactIdversion2.12.0/version/dependency/dependencies/dependencyManagement Maven模型
项目对象模型 (Project Object Model)依赖管理模型(Dependency)构建生命周期/阶段(Build lifecycle phases)
1). 构建生命周期/阶段(Build lifecycle phases) 以上图中紫色框起来的部分就是用来完成标准化构建流程 。当我们需要编译Maven提供了一个编译插件供我们使用当我们需要打包Maven就提供了一个打包插件供我们使用等。
2). 项目对象模型 (Project Object Model) 以上图中紫色框起来的部分属于项目对象模型就是将我们自己的项目抽象成一个对象模型有自己专属的坐标如下图所示是一个Maven项目 坐标就是资源(jar包)的唯一标识通过坐标可以定位到所需资源(jar包)位置 3). 依赖管理模型(Dependency) 以上图中紫色框起来的部分属于依赖管理模型是使用坐标来描述当前项目依赖哪些第三方jar包 之前我们项目中需要jar包时直接就把jar包复制到项目下的lib目录而现在书写在pom.xml文件中的坐标又是怎么能找到所要的jar包文件的呢
答案Maven仓库 仓库用于存储资源管理各种jar包
仓库的本质就是一个目录(文件夹)这个目录被用来存储开发中所有依赖(就是jar包)和插件
Maven仓库分为
本地仓库自己计算机上的一个目录(用来存储jar包)中央仓库由Maven团队维护的全球唯一的。仓库地址https://repo1.maven.org/maven 2/远程仓库(私服)一般由公司团队搭建的私有仓库 当项目中使用坐标引入对应依赖jar包后首先会查找本地仓库中是否有对应的jar包
如果有则在项目直接引用如果没有则去中央仓库中下载对应的jar包到本地仓库
如果还可以搭建远程仓库(私服)将来jar包的查找顺序则变为本地仓库 -- 远程仓库-- 中央仓库 Maven安装配置步骤
1. 解压安装 2. 配置仓库 3. 配置Maven环境变量 IDEA集成Maven POM配置详解
POM (Project Object Model) 指的是项目对象模型用来描述当前的maven项目。
使用pom.xml文件来实现 pom.xml文件
?xml version1.0 encodingUTF-8?
project xmlnshttp://maven.apache.org/POM/4.0.0
xmlns:xsihttp://www.w3.org/2001/XMLSchema-instance
xsi:schemaLocationhttp://maven.apache.org/POM/4.0.0
http://maven.apache.org/xsd/maven-4.0.0.xsd
!-- POM模型版本 --
modelVersion4.0.0/modelVersion
!-- 当前项目坐标 --
groupIdcom.itheima/groupId
artifactIdmaven_project1/artifactId
version1.0-SNAPSHOT/version
!-- 打包方式 --
packagingjar/packaging
/project
1、pom用在父级工程或聚合工程中用来做jar包的版本控制必须指明这个聚合工程的打包方式为pom。
2、jar工程的默认打包方式打包成jar用作jar包使用。存放一些其他工程都会使用的类工具类。我们可以在其他工程的pom文件中去引用它
3、 war将会打包成war发布在服务器上如网站或服务。用户可以通过浏览器直接访问或者是通过发布服务被别的工程调用 Maven坐标详解
什么是坐标
Maven中的坐标是 资源的唯一标识 , 通过该坐标可以唯一定位资源位置使用坐标来定义项目或引入项目中需要的依赖
Maven坐标主要组成
groupId定义当前Maven项目隶属组织名称通常是域名反写例如com.itheimaartifactId定义当前Maven项目名称通常是模块名称例如 order-service、goodsservice version定义当前项目版本号
如下图就是使用坐标表示一个项目 依赖配置
依赖指当前项目运行所需要的jar包。一个项目中可以引入多个依赖
例如在当前工程中我们需要用到logback来记录日志此时就可以在maven工程的pom.xml文件 中引入logback的依赖。具体步骤如下
在pom.xml中编写标签 在标签中使用引入坐标定义坐标的 groupId、artifactId、version 注意事项
1. 如果引入的依赖在本地仓库中不存在将会连接远程仓库 / 中央仓库然后下载依赖 这个过程会比较耗时耐心等待
2. 如果不知道依赖的坐标信息可以到mvn的中央仓库 https://mvnrepository.com/中搜索 排除依赖
问题之前我们讲了依赖具有传递性。那么A依赖BB依赖C如果A不想将C依赖进来是否可以做到
答案在maven项目中我们可以通过排除依赖来实现
什么是排除依赖
排除依赖指主动断开依赖的资源。被排除的资源无需指定版本
dependencygroupIdcom.itheima/groupIdartifactIdmaven-projectB/artifactIdversion1.0-SNAPSHOT/version!--排除依赖, 主动断开依赖的资源--exclusionsexclusiongroupIdjunit/groupIdartifactIdjunit/artifactId/exclusion/exclusions
/dependency
依赖范围
在项目中导入依赖的jar包后默认情况下可以在任何地方使用。 如果希望限制依赖的使用范围可以通过标签设置其作用范围 作用范围
主程序范围有效main文件夹范围内测试程序范围有效test文件夹范围内是否参与打包运行package指令范围内 如上图所示给junit依赖通过scope标签指定依赖的作用范围。 那么这个依赖就只能作用在测试环 境其他环境下不能使用。 生命周期 Maven的生命周期是抽象的这意味着生命周期本身不做任何实际工作。在Maven的设计中实际任务 如源代码编译都交由插件来完成。 compile test package install clean