在最开始我们都是一个工程就是一个项目,这样很杂乱。我们可以借助Maven分为多个模块,模块之间进行引入,从而实现项目的多模块开发,便于分工。
在之后又出现了分布式项目就更好了
项目的jar文件 jar的大小我们项目中都要放入jar文件,此时每一个jar包都有个自己的大小。通过Maven,我们只需要编写引用,会自己想指定好的仓库查找引用,并不会真正添加到项目中
jar的查找通过Maven到仓库中查找。本地仓库没有可以去远程仓库中下载
jar包依赖Maven对jar包之间的依赖做了处理
Maven是什么Maven使一款服务于java平台的自动化构建工具
构建工具发展(make ant Maven gradle)gradle新的工具
构建Maven可以去构建一个java项目
- 清理:将以前编译得到的旧的class字节码文件删除,为下一次编译做准备
- 编译:以java源文件编译class字节码文件交给JVM去执行
- 测试:自动调用junit程序
- 报告:测试程序执行的结果
- 打包:将web工程打成wae包,或jar包
- 安装:将打包得到的文件复制到仓库中
- 部署:一个BS项目最终运行并不是动态web工程本身,而是整个web工程编译的结果
java -version在官网下载maven
进行环境变量配置
查看maven版本
mvn -v
安装这一块我这里说明的并不细致
安装完毕之后还需要改变仓库的地址,一边提高下载jar文件的效率
Maven的核心概念- 约定的目录结构
- POM
- 坐标
- 依赖
- 仓库
- 生命周期/插件/目标
- 继承
- 聚合
根目录:工程名
src目录:源码
pom.xml文件:maven工程的核心配置文件
main目录:存放主程序
test目录:存放测试程序
java目录:存放java源文件
resources目录:存放框架或其他工具配置文件
正常我们创建SpringBoot等也都是创建Maven项目
为什么要遵守目录结构Maven要负责我们这个项目的自动化构建,以编译为例。Maven想要编译就需要知道java源代码保存在哪里。
遵守框架的 约定>配置>编码
当然可以自定义文件位置让Maven知道
常见Maven命令现在使用IDEA,使用Maven构建项目基本上都可以在IDEA上进行 *** 作命令
mvn clean: 清理 mvn compile 编译主程序 mvn test-compile: 编译测试程序 mvn test: 执行测试 mvn package: 打包 mvn install: 安装 mvn site: 生成站点
IDEA中的Maven项目
lifecycle:中存放这些命令,点击即可执行
dependencies:中存放载入了哪些jar文件,jar包之间展开可以看到引入的其他jar文件
POM(project object model)项目对象模型
pom.xml对于Maven来说使核心配置文件,与构建过程相关的一切设置都在这个文件中进行配置。
该文件可以用来添加jar文件,添加Maven插件。继承关系等
Maven的 *** 作基本上都在此文件上进行
坐标使用三个向量在仓库中指定唯一的Maven工程(jar文件)
groupid:公司或组值域名的倒叙+项目名org.springframework.boot artifactid:模块名字 spring-boot-starter-parent version:版本2.3.4.RELEASE
Maven通过坐标来查找仓库中的文件(jar)或者自己写的maven模块
这些坐标结合父标签编写在pom中
仓库 仓库的分类**本地仓库:**当前电脑上部署的仓库目录,优先查找该仓库是否存在指定的依赖坐标。在远程库查找到的坐标,会及进行下载到本地仓库
远程仓库:
私服:搭建在局域网环境中,为局域网范围内的所有Maven工程服务
中央仓库:在interner上,世界上所有Maven工程服务
中央仓库镜像:为了分担中央仓库的流量,提高用户访问速度出现的
仓库中的内容maven自身所需要的插件
第三方框架或工具的jar包
我们自己开发的maven工程
依赖Maven解析依赖信息时会到本地仓库查找被依赖的jar包
我们自己开发的Maven工程,使用mvn install命令安装后就进入了仓库
依赖的范围在最开始我是用Maven的时候因为scope的依赖范围,编写了jar包但是一直显示jar包不存在。javax.servlet javax.servlet-apiprovided
常见的依赖范围
Maven可以进行多模块开发,模块与模块之间的引用
当A模块引入B模块,B模块有的内容A模块也可以使用,这就是依赖的传递性。
继承我们编写项目的时候每个模块都需要jar包,为了方便进行maven各个模块之间的管理,可以创建一个父模块。
父模块可以做到统一各个子模块的依赖管理
通过继承和传递性来完成Maven的多模块开发
聚合当夫模块出现,为了方便查看夫模块下的子模块
子啊夫模块pom中存在聚合,可以看到引入了哪些子模块
Maven的多模块开发随着项目的越来越大,为了更好的进行管理项目
我们可以使用Maven来进行多模块开发,将一个大项目拆分为一个一个小的模块(针对庞大复杂的项目可以更好的管理)
步骤 首先创建一个Maven的项目作为父工程 父工程中的src文件夹删除掉- 因为父工程是为了管理下层多个子工程
- 在父工程导入依赖,其他的子工程都会存在,(继承性)(传递性)
父工程
4.0.0 ParentMaven ParentMavenpom 1.0-SNAPSHOT One org.springframework spring-webmvc4.3.7.RELEASE
子工程
ParentMaven ParentMaven 1.0-SNAPSHOT 4.0.0 One One1.0-SNAPSHOT
- 父工程的依赖可以对子工程进行管理
- 子父工程在pom中存在明显的相互调用关系
因为现在子工程之间都是独立的小工程,想要建立联系怎么办呢
谁想要调用谁 就在pom中进行引入需要调用子工程即可
Two工程想要使用One工程的功能示例展示项目结构
展示two工程的pom文件
ParentMaven ParentMaven 1.0-SNAPSHOT 4.0.0 TwoOne One1.0-SNAPSHOT
展示各个工程的依赖
展示Two工程的Test类
import cn.pojo; public class Test { public static void main(String[] args) { // 自身并不存在pojo类但是因为引入One依赖所以可以使用One中的代码 pojo pojo = new pojo(); } }
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)