Maven使用
用于管理项目的工具,统一约定的项目结构
- pom文件管理依赖
- src下写代码:包含main具体项目代码,test测试代码
- target构建/编译输出目录
常用项目生命周期:可以在pom配置跳过某些阶段,如打包是包含测试的
- clean:清理target
- complile:编译代码=>class文件
- test:测试,自动运行test下的所有测试
- package:打包=>生成jar或者war
- deploy:部署到远程仓库
- install:部署到本地仓库
基础标签
maven里面会定义:当前项目的一些基础信息,一些依赖信息,打包类型,maven用来构建包的工具这些。
导入springboot的方式
-
BOM方式:Bill Of Materials,物料清单,集中管理依赖项的版本信息。不包含实际的代码或资源,仅仅声明一组依赖项的版本,从而使其他项目在引入这些依赖时无需重复指定版本,放在dependencyManagement里面。
<dependencyManagement> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <!--groupid:组织名称 --> <artifactId>spring-boot-dependencies</artifactId> <!--模块:组织名称 import作用域表示将指定POM中的依赖管理导入到当前POM中 --> <version>${spring-boot.version}</version> <type>pom</type><!--依赖的类型,默认为jar。这里设置为pom,是因为这个模块没有代码,用来管理jar包的--> <scope>import</scope><!--import作用域表示将指定POM中的依赖管理导入到当前POM中 --> </dependency> </dependencies> </dependencyManagement> -
继承的方式 : 继承属性,继承父pom配置好的插件,已经导入的依赖(相当于父pom写过的子pom就不用再写了)
<parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>${spring-boot.version}</version> </parent>
dependencyManagement:仅仅管理依赖版本,并真正不导入
dependencies:导入依赖,没有版本号会从dependencyManagement中寻找
依赖中的scope标签:用于声明依赖生效的位置,比如在测试的时候需要,打包的时候不需要
多模块开发
<packaging>pom</packaging> <!--声明打包方式,默认jar包:pom通常用于实现多模块开发,jar就是打成jar包,war打成可以放到tomcat容器内运行的war包 -->
- pom:其他模块在引用的时候,maven只会解析其pom,声明成pom,我们也能通过maven插件使得在打包的时候打成jar或者war包
- 当一个依赖的打包类型是
jar或war时,如果被声明为依赖,Maven 会尝试下载并引入完整的包文件
多模块开发:通常构建项目打包方式为pom,模块打包方式为jar,启动模块打包方式看情况用jar或者pom
- 在模块内继承
- 在项目内聚合
继承
通过一个parent标签指定继承父pom,maven是单继承。
聚合
通过一个父项目一次性构建多个模块,通过modules标签聚合多个子模块,每次父项目构建时都会同时构建所有子模块。
私服
版本:
- 快照版本:不稳定版本,当前还在开发,实时更新到仓库,测试或者开发会根据需要从仓库下载快照版本进行项目构建 maven会根据是否带有-SNAPSHOT来判断是快照版本还是正式版本,deploy后会发布依赖到仓库
- 正式版本:稳定版本
公司内会有自己的maven私服,直接用同事的maven配置文件即可。一般需要配置:
- 私服的地址:mirrors 标签
- 访问的用户密码 : servers 标签
- 配置下载快照版本的仓库:开发的时候可能需要实时的使用仓库的快照版本进行构建 实现不改版本号的情况,实时从仓库拉取依赖构建项目
- 配置发布依赖的地址:需要单独配置快照版本和正式版本