中国建设建行网站,科技木是什么材料,网站建设网站服务流程,企业管理系统er图介绍
apache旗下的开源项目,用于管理和构建java项目的工具
官网: Welcome to The Apache Software Foundation!
1.依赖管理
通过简单的配置, 就可以方便的管理项目依赖的资源(jar包), 避免版本冲突问题 优势: 基于项目对象模型(POM),通过一小段描述信息来管理项目的构建
2…介绍
apache旗下的开源项目,用于管理和构建java项目的工具
官网: Welcome to The Apache Software Foundation!
1.依赖管理
通过简单的配置, 就可以方便的管理项目依赖的资源(jar包), 避免版本冲突问题 优势: 基于项目对象模型(POM),通过一小段描述信息来管理项目的构建
2.统一目录结构
提供标准, 统一的项目结构 3.项目构建
标准跨平台(linux/windows/MacOs)的自动化项目构建方式 POM 仓库
用来管理和存储jar包 1.本地仓库
本机的仓库, 计算机上的一个目录项目中使用的依赖会先在本地仓库中查找 2.远程仓库
公司/团队维护的仓库需要配置,不配置就直连中央仓库下载流程
本地仓库中不存在的依赖再来远程仓库查找依赖存在直接下载使用依赖不存在去中央仓库下载
好处
连接中央的仓库的速度较慢, 因为要访问外网使用中央仓库可以方便其他同事复用依赖提高团队整体的依赖下载速度 3.中央仓库
官方维护的仓库 依赖查找循序: 本地仓库-远程仓库(私服)-中央仓库
下载
安装
单独安装Maven, Maven的安装包是一个绿色软件, 解压即可使用 说明:
测试: nvm -v 目录
bin- 可执行的程序conf/settings - 配置文件mvn_pepo - 本地仓库lib - maven依赖的jar包资源
集成Maven
IEDA中集成Maven有两种方式, 可以配置当前项目, 比较繁琐, 也可以全局配置Maren, 比较推荐
1.当前项目
选择IDEA中的File - Settings - Build, Execution, Deployment - Build Tools - Mwven设置IEAC使用本地安装的Maven, 并修改配置文件以及本地仓库路径 2.全局配置 使用
创建Maven项目
1.先创建空项目 2.创建模块,选择Maven,选择JDK,点击Next
3.填写模块名称,坐标信息,点击finish,创建完成 目录结构
1.基本信息
项目基本信息存放在pom.xml配置文件中
!-- 项目坐标 --
groupIditheima.com/groupId
artifactIdmaven_helloworld/artifactId
version1.0-SNAPSHOT/version!-- 项目运行和打包的jdk版本 --
propertiesmaven.compiler.source17/maven.compiler.sourcemaven.compiler.target17/maven.compiler.targetproject.build.sourceEncodingUTF-8/project.build.sourceEncoding
/properties
2.Maven坐标
Maven中的坐标是资源的唯一标识, 通过坐标可以定位资源位置
作用: 使用坐标来定义项目或引入项目的依赖
组成:
groupld: 定义当前项目隶属的组织名称, 一般为域名倒写
artifactId: 定义当前Maven项目名称, 一般是模块名称
version: 定义当前项目版本号
3.src根目录
main: 项目资源
java: 源代码resources: 配置文件
test: 测试资源
java: 源代码resources: 配置文件(使用较少,默认不创建)
target: 编译后的字节码文件
4.HelloWord
1.连包带类创键文件 2.helloworld代码 导入Maven项目
方式1
展开右侧Maven面板-选择号 -选择到pom.xml文件 -导入 方式2
通过IDEA导入Maven项目, 注意要选到 pom.xml 文件 移除Maven项目
这里的移除只是在IDEA中移除maven模块, 资源还存在于文件夹中 依赖管理
依赖配置
依赖: 当前项目运行所需要的jar包, 一个项目可以引入很多依赖
编写dependencies/dependencies标签嵌套dependency/dependency标签定义依赖坐标
dependenciesdependency//组织名groupIdjunit/groupId //模块名artifactIdjunit/artifactId //版本号version4.12/version /dependency
/dependencies
坐标信息查询: https://mvnrepository.com/添加坐标后,不会立即生效, 点击刷新的按钮即可 (如果没有刷新按钮可以手动刷新) 查看依赖以及依赖版本 如果引入的依赖, 本地仓库不存在, 将会连接远程仓库/中央仓库下载, 这个过程比较耗时
依赖传递
Maven项目中的依赖具有传递性, 项目中配置的依赖是直接依赖, 项目依赖的依赖就是间接依赖 查看依赖关系
方法1: 通过maven面板查看 方法2: 打开pom.xml文件, 右键选择Diagrams - show Dependencies 排除依赖
A依赖B, B依赖C, 默认A就会依赖C, 不想让A依赖C, 就可以使用依赖排除, 主动断开依赖的资源, 被排除的资源无需指定版本
dependencygroupIdjunit/groupIdartifactIdjunit/artifactIdversion4.12/version!--依赖排除--exclusionsexclusiongroupIdjunit/groupIdartifactIdjunit/artifactId/exclusion!--依赖排除--/exclusions
/dependency
依赖范围
依赖的jar包, 默认情况下, 在任何地方都可以使用, 可以通过scoped/scoped标签设置其作用范围 dependencygroupIdjunit/groupIdartifactIdjunit/artifactIdversion4.12/versionscopetext/scope/dependency 可选参数 生命周期
Maven的生命周期就是为了对所有的maven项目构建过程进行抽象和统一
分类
Maven有3套相互独立的生命周期 clean: 清理工作
clean: 移除上一次构建生成的文件
default: 核心工作(如: 编译,测试,打包,安装,部署)
compile: 编译项目源代码text: 运行测试package: 将编译后的文件打包, 如jar, war包install: 安装项目到本地仓库
site: 生成报告,发布站点等
执行顺序
在同一套生命周期中, 当运行后面的阶段时, 前面的阶段都会运行 双击执行install周期, 但是test等周期默认也会执行如果需要的话, 可以指定禁用周期 执行
执行maven指定的生命周期有两种方式
1.命令执行
在项目所在目录使用命令行工具, 执行指定命令, 执行maven的声明周期 mvn cleanmvn compilemvn packagemvn test
2.双击执行
在idea中使用maven工具栏, 双击生命周期执行 3.执行原理
maven本身不执行任何操作, 所有的操作都是通过绑定的插件进行的, 所以maven的本质是一个插件集合 当我们双击生命周期阶段,运行程序时实际上是与生命周期绑定的插件在工作
分模块设计
将项目按照功能拆分成若干个子模块, 方便项目的管理和维护, 也方便模块间的相互调用, 资源共享 需求: 完成tlias项目的模块拆分 拆分实体类Pojo
目标: 创建maven 模快 tlias-pojo, 存放实体类
1.新建模块: new Module - Maven - Next 2.转移实体类: 连包带类一起复制到新模块中 3.在新模块中引入实体类需要的依赖, 以解决报错 dependencies!-- lombok依赖 --dependencygroupIdorg.projectlombok/groupIdartifactIdlombok/artifactIdversion1.18.24/version/dependency/dependencies
4.引入模块: 在原始的项目中引入拆出去的模块 !-- 拆分的tlias-pojo模块 --dependencygroupIdcom.itheima/groupIdartifactIdtlias-pojo/artifactIdversion1.0-SNAPSHOT/version/dependency 拆分工具类Utils
目标: 创建maven 模块 tlias-utils, 存放相关工具类
步骤: 与拆分实体类的步骤一致
注意: 引入web起步依赖时, 由于没有父工程限制, 需要指定版本, 版本与项目工程中的保持一致
继承
继承关系
继承描述的是两个工程间的关系, 子工程可以继承父工程中的配置信息, 常见于依赖关系的继承
1.作用: 简化依赖配置, 统一管理依赖 2.继承关系: 子工程继承父工程, 父工程继承spring-boot-stater-parent工程 3.目录结构: 两种工程结构都可以, 但是嵌套的父子结构看上去更清晰 需求: 改造tlias项目
1.创建父工程
创建maven模块tlias-parent, 该工程为父工程, 设置打包方式为pom(默认jar) 父工程不写具体逻辑代码,可以把src删掉让父工程设置继承官方工程
?xml version1.0 encodingUTF-8?
project xmlnshttp://maven.apache.org/POM/4.0.0xmlns:xsihttp://www.w3.org/2001/XMLSchema-instancexsi:schemaLocationhttp://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsdmodelVersion4.0.0/modelVersion//1.继承官方工程 parentgroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-parent/artifactId// 注意版本号version3.2.3/versionrelativePath/ !-- lookup parent from repository --/parentgroupIdcom.itheima/groupIdartifactIdtlias-parent/artifactIdversion1.0-SNAPSHOT/version!-- 2.设置打包方式为pom --packagingpom/packagingdependencies!-- lombok依赖 --dependencygroupIdorg.projectlombok/groupIdartifactIdlombok/artifactIdversion${lombok.version}/version/dependency/dependencies/project
2.子工程继承父工程: pom.xml文件中
// 配置继承关系
parentgroupIdcom.itheima/groupIdartifactIdtlias-parent/artifactIdversion1.0-SNAPSHOT/version// 指定父工程相对位置relativePath../tlias-parent/pom.xml/relativePath
/parent 3.管理共有依赖
?xml version1.0 encodingUTF-8?
project xmlnshttp://maven.apache.org/POM/4.0.0xmlns:xsihttp://www.w3.org/2001/XMLSchema-instancexsi:schemaLocationhttp://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsdmodelVersion4.0.0/modelVersiondependencies!-- lombok依赖 --dependencygroupIdorg.projectlombok/groupIdartifactIdlombok/artifactIdversion1.18.24/version/dependency/dependencies/project
在父工程中配置子工程共有的依赖, 子工程会自动继承父工程的依赖若父子工程都配置了同一个依赖的不同版本, 最终以子工程为准
版本锁定
在Maven中, 可以在父工程的pom文件中, 通过 dependencyManagement 来统一管理依赖版本
!-- 版本锁定 --
dependencyManagementdependencies!--JWT令牌生成--dependencygroupIdio.jsonwebtoken/groupIdartifactIdjjwt/artifactIdversion0.9.1/version/dependency /dependencies
/dependencyManagement
dependencies!-- JWT令牌依赖--dependencygroupIdio.jsonwebtoken/groupIdartifactIdjjwt/artifactId/dependency
/dependencies
通过版本锁定, 分散在子工程的依赖版本由父工程统一管理版本锁定只管理版本, 子程序还是需要引入依赖的, 只是不需要指定版本了 自定义属性: 父工程统一管理依赖版本后, 可以使用自定义属性, 集中定义依赖版本, 无需上下翻找
?xml version1.0 encodingUTF-8?
project xmlnshttp://maven.apache.org/POM/4.0.0xmlns:xsihttp://www.w3.org/2001/XMLSchema-instancexsi:schemaLocationhttp://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsdmodelVersion4.0.0/modelVersionpropertiesmaven.compiler.source17/maven.compiler.sourcemaven.compiler.target17/maven.compiler.target!-- 自定义属性 --!-- 格式: 自定义属性名.version --lombok.version1.18.24/lombok.versionmybatis.version3.0.3/mybatis.versionpagehelper.version1.4.6/pagehelper.versionfastjson.version1.2.76/fastjson.versionaliyunsdkoss.version3.15.1/aliyunsdkoss.versionjaxbapi.version2.3.1/jaxbapi.versionactivation.version1.1.1/activation.versionjaxbruntime.version2.3.3/jaxbruntime.versionjjwt.version0.9.1/jjwt.version/propertiesdependencies!-- lombok依赖 --dependencygroupIdorg.projectlombok/groupIdartifactIdlombok/artifactId// 属性引用 version${lombok.version}/version/dependency/dependencies!-- 版本锁定 --dependencyManagementdependencies!-- mybatis起步依赖 --dependencygroupIdorg.mybatis.spring.boot/groupIdartifactIdmybatis-spring-boot-starter/artifactIdversion${mybatis.version}/version/dependency... .../dependencies/dependencyManagement
/project
dependencies是直接依赖, 在父工程中配置了依赖, 子工程就会直接继承下来dependencyManagement是版本管理, 只管理依赖的版本, 使用时子工程仍然需要引入依赖坐标
聚合
项目开发完成后需要打包, 分模块开发时, 打包前需要手动安装其他模块, 保证本地仓库中存在该模块, 才能打包成功, 否则可能会找不到相关模块, 造成打包失败 概念: 聚合就是把多个模块作为一个整体进行项目构建, 简化项目打包过程 聚合工程: 一个不具有业务功能的工程(有且只有一个pom文件),最佳实践: 通常情况下, 聚合工程和继承中的父工程共用一个实际作用: 构建项目直接在聚合工程上构建, 无需手动构建依赖关系 实现: maven中可以通过modules设置当前聚合工程所包含的子模块名称
?xml version1.0 encodingUTF-8?
project xmlnshttp://maven.apache.org/POM/4.0.0xmlns:xsihttp://www.w3.org/2001/XMLSchema-instancexsi:schemaLocationhttp://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsdmodelVersion4.0.0/modelVersion!--聚合其他模块--modulesmodule../tlias-pojo/modulemodule../tlias-utils/modulemodule../tlias_web_management/module/modules... ...
/project
打包: 在聚合工程中聚合其他模块, 然后再聚合工程上构建项目执行: 聚合工程中所包含的模块, 在构建时, 会自动根据模块间的依赖关系设置构建顺序, 与书写顺序无关 继承与聚合的关系 私服
私服是一种特殊的远程仓库, 它是架设在局域网内的仓库服务, 用来代理位于外部的中央仓库, 解决团队内部资源共享和资源同步的问题 使用私服后, 依赖查找顺序为: 本地仓库 - 私服 - 中央仓库 使用私服就是学习资源的的上传与下载 RELEASE(发行版本): 功能趋于稳定, 当前更新停止, 可以用于发行的版本, 储存在私服中的RELEASE仓库中SNAPSHOT(快照版本): 功能不稳定, 尚处于开发中的版本,即快照版本, 储存在私服的SHAPSHOT仓库中CENTRAL(官方版本): 中央仓库中下载的依赖, 储存在私服的CENTRAL仓库中 连接私服是比较固定的操作, 资料中也提供了配置文档, 可以参照配置
设置私服的访问用户名和密码 (maven安装目录/settings.xml文件/server中配置) IDEA中的maven工程的pom文件中配置上传(发布)地址 设置私服依赖下载的仓库组地址( settings.xml中的mirrors / profiles中配置) 资源上传: 执行maven的deploy生命周期, 发布资源到私服中, 同私服的其他同事就可以下载使用了 资源上传到私服的位置, 由资源的版本决定 资源下载: 连接私服后, 引用依赖的坐标, 刷新后, maven就会自动到私服中下载资源