一、Maven简介
maven的本质是一个项目管理工具,将项目开发和管理过程抽象成一个项目对象模型POM(Project Object Modle)
maven的作用:
1、项目构建:提供标准的,跨平台的自动化项目管理构建方式
2、依赖管理:方便快捷的管理项目依赖的资源jar包,可以统一控制版本
3、统一开发结构:提供标准的,统一的项目结构
maven基础概念:
仓库:用于存储资源,包含各种jar包。仓库分为本地仓库、远程仓库(又分为Maven团队维护 的*仓库、部门/公司范围内存储资源的私服)。资源在mvnrepository.com查找
坐标:Maven中坐标用于描述仓库中资源的位置
groupId:定义当前maven项目的隶属组织名称(通常是域名反写)
artifactId:定义当前maven项目的名称 (通常是指模块名称)
version:定义当前资源的版本号
packaging:定义当前项目的打包方式(默认方式为打jar包)
坐标作用:使用唯一的标识,通过改标识可以下载对应的资源
Maven项目构建命令:
mvn compile: 编译
mvn clean: 清理
mvn test: 测试
mvn package: 打包
mvn install: 安装到本地仓库
第一个Maven项目(手动制作)
idea创建第一个Maven工程:
先创建空java工程,然后setting配置Maven属性,然后project structure中new module选择模板
pom.xml中添加插件:
依赖配置格式:
依赖传递:
依赖传递的冲突问题:
路径优先:当依赖中出现相同资源时,层级越深,优先级越高。
声明优先:当资源在同层级被依赖时,后配置的覆盖前面配置的
隐藏依赖实现方法:
<optional>true</optional>
排除依赖(主动断开依赖的资源,被排除的资源无需指定版本--不需要):
依赖范围:依赖的jar包默认情况可以在任何地方使用,可以通过scope标签设定其作用范围
作用范围:1)主程序范围有效(main)
2)测试程序范围有效(test)
3)是否参与打包(package指令范围内)
soupe参数:
依赖范围传递性:(了解)
项目构建生命周期:(插件与生命周期内的阶段绑定,在执行到对应生命周期执行对应插件功能)
1)clean:清理工作(分为pre-clean、clean、post-clean)
2)default:核心工作,例如编译,测试,打包,部署等
3)site:产生报告,发布站点等
工程模块与模块划分:
分模块开发与设计:
将一个项目分成多个maven项目模块,由主模块统一管理
ssm_dao拆分:
ssm_service拆分:
ssm_control拆分:
聚合:
作用:聚合用于快速构建maven项目工程,一次性管理多个模块。
方法:新建一个maven模块,只留下pom文件,在pom文件里面将其打包类型设置为pom。
如何由主模块去管理其他所有模块:
<!--定义该工程为构建工程管理-->
<packaging>pom</packaging>
<modules>
<module>模块名(地址)</module>
<module>模块名(地址)</module>
<module>模块名(地址)</module>
</modules>
//end
注意:参与聚合操作的模块最终执行的先后顺序与模块间的依赖关系有关,与配置顺序无关
继承:
作用:通过继承可以是在在子模块(工程)中使用父模块中的依赖配置(与Java继承类似)
方法:在父模块中加入需要被被子模块继承的依赖:<dependencyManagement>在这中间添加依赖</dependencyManagement>
然后在子模块的pom文件中配置:
<parent>
<groupId></groupId>
<artifactId></artifactId>
<version></version>
//前面三个与父模块中的坐标相同
<relativePath>父模块的pom文件的地址</relativePath>
</parent>
属性:
1、自定义属性:
作用:等同于Java中的变量,方便统一管理重复代码(例如:多个依赖的版本号一致时,当需要全部改变时则只需要修改变量)
定义格式:
<properties>
<(变量名)spring.version> (5.1.9.RELEASE)变量值 </(变量名)spring.version>
<(变量名)junit.version> (4.12)变量值 </(变量名)junit.versio
</properties>
调用格式:${变量名}
2、内置属性:
作用:使用maven的内置属性,快速配置
调用格式:${version} ${basedir}等
3、Setting属性:
作用:使用maven配置文件setting.xml中的标签属性,用于动态配置
调用格式:${settings.localRepository}
4、Java系统属性:
作用:读取Java系统属性
调用格式:${user.home}
5、环境变量属性:
作用:读取环境变量属性
调用格式:${env.JAVA_HOME}
资源配置:
配置资源文件:
<!--配置资源文件对应的信息-->
<resources>
<resource>
<!--设定配置文件对应的位置目录,支持使用属性动态设定路径-->
<directory>地址</directory>
<!--开启对配置文件的资源加载过滤-->
<filtering>true</filtering>
</resource>
</resources>
多环境开发配置:
<!--创建多环境-->
<profiles>
<!--定义具体的环境:生产环境-->
<profile>
<!--定义环境对应的唯一名称-->
<id>开发环境名称1</id>
<!--定义环境中的专用的属性值-->
<properties>
<jdbc.url>jdbc链接</jdbc.url>
</properties>
<activation>
<activeByDefault>true</activeByDefault>
</activation>
</profile>
<!--定义具体的环境:开发环境-->
</profiles>