Maven常用知识
2022-07-21 18:54:56 36 举报
AI智能生成
Maven 基本命令
作者其他创作
大纲/内容
Maven 工程测试
测试方法
黑盒测试:不需要写代码,给输入值,看程序是否能够输出期望的值
白盒测试:需要写代码的。关注程序具体的执行流程
单元测试是指对软件中的最小可测试单元进行检查和验证,Java 里单元测试指一个类的功能。单元测试是在软件开发过程中要进行的最低级别的测试活动,软件的独立单元将在与程序的其他部分相隔离的情况下进行测试。
Junit 结果判定
点击测试方法边的三角运行测试方法,如果出现绿色对钩,证明方法能正常运行
如果出现红色感叹号,证明方法抛出异常,需要修改方法
@Before、@After
@Before
修饰的方法会在测试方法之前自动执行,
修饰的方法会在测试方法之前自动执行,
获取资源
@After
修饰的方法会在测试方法执行之后自动执行。
修饰的方法会在测试方法执行之后自动执行。
释放资源
依赖冲突调解
原因——依赖传递
假如项目依赖 jarA,而 jarA 有依赖于 jarB,当添加 jarA 时,又添加了 jarB 到项目中
这时就可能会产生依赖冲突问题,比如依赖 A 会引入依赖 C ,依赖 B 也会引入依赖 C。
依赖冲突调解
Maven 调解依赖冲突的第一原则是最短路径优先原则
项目依赖关系树中路径最短的版本会被使用。
例如,假有几个 jar包之间的依赖关系是:A->B->C->D(2.0) 和 E->F->D(10),如果同时引入 A 和 E,那么 D(1.0) 会被使用,因为 E 到 D 的路径更短
例如,假有几个 jar包之间的依赖关系是:A->B->C->D(2.0) 和 E->F->D(10),如果同时引入 A 和 E,那么 D(1.0) 会被使用,因为 E 到 D 的路径更短
第二原则最先声明原则
在依赖路径长度相等的前提下,在POM中依赖声明的顺序靠前的会被解析使用
排除依赖、锁定版本
排除依赖
通过<exclusions>下的<exclusion>标签
锁定版本
在 Maven 中为某个 jar 包配置锁定版本后,不考虑依赖的声明顺序和依赖路径,以锁定的版本的为准添加到工程中,此方法在企业开发中常用。
优化依赖
mvn dependency:list 查看当前项目已解析依赖
mvn dependency:tree 查看依赖树
mvn dependency:analyze 分析依赖树
mvn dependency:tree 查看依赖树
mvn dependency:analyze 分析依赖树
Maven 聚合
聚合关系
Maven 将一个大项目分成一个个小项目开发,最后打包时会将这些小的项目打成一个完整的 war 包独立运行
继承关系
Maven 中的继承是针对于父工程和子工程。父工程定义的依赖和插件子工程可以直接使用。
注意父工程类型一定为 POM 类型工程。
注意父工程类型一定为 POM 类型工程。
Maven 中对于继承采用的也是单继承,也就是说一个子项目只能有一个父项目。
但我们可以在 <dependencyManagement> 配置多继承。
但我们可以在 <dependencyManagement> 配置多继承。
可以继承的pom元素:
groupId:项目组ID
version:项目的版本
description:项目的描述信息
organization:项目的组织信息
inceptionYear:项目的创始年份
url:项目的URL地址
developers:项目的开发者信息
contributors:项目的贡献者信息
distributionManagement:项目的部署配置
issueManagement:项目的缺陷跟踪系统信息
ciManagement:项目的持续集成系统信息
scm:项目版本控制信息
mailingLists:项目的邮件列表信息
properties:自定义的maven属性
dependencies:项目的依赖配置
dependencyManagement:项目的依赖管理配置
repositories:项目仓库地址配置
build:项目源码目录配置、输出目录配置、插件配置、插件管理配置
reporting:项目的报告输出目录配置、报告插件配置
groupId:项目组ID
version:项目的版本
description:项目的描述信息
organization:项目的组织信息
inceptionYear:项目的创始年份
url:项目的URL地址
developers:项目的开发者信息
contributors:项目的贡献者信息
distributionManagement:项目的部署配置
issueManagement:项目的缺陷跟踪系统信息
ciManagement:项目的持续集成系统信息
scm:项目版本控制信息
mailingLists:项目的邮件列表信息
properties:自定义的maven属性
dependencies:项目的依赖配置
dependencyManagement:项目的依赖管理配置
repositories:项目仓库地址配置
build:项目源码目录配置、输出目录配置、插件配置、插件管理配置
reporting:项目的报告输出目录配置、报告插件配置
聚合与继承的关系
聚合:聚合模块知道哪些被聚合的模块,但被聚合的模块不知道聚合模块的存在
继承:父POM不知道子模块,但子模块都知道父POM的存在
可以将聚合和继承的代码都放到同一个pom文件中
继承:父POM不知道子模块,但子模块都知道父POM的存在
可以将聚合和继承的代码都放到同一个pom文件中
依赖传递失效及解决方案
直接在本工程再次添加一遍依赖
Maven 基本介绍
Maven 是一个项目管理工具,可以帮助程序员构建工程、管理 jar 包、编译代码、完成测试、项目打包等功能。
Maven工具是基于POM(Project Object Model,项目对象模型)实现的。在Maven的管理下每个项目都相当于是一个对象。
Maven标准化了项目的构建。即对项目结构,构建命令等进行了标准化定义。
Maven提供了一个免费的中央仓库,在其中几乎可以找到任何的流行开源类库。
Maven是跨平台的,在Windows、Linux、Mac上,都可以使用同样的命令。
Maven标准化了项目的构建。即对项目结构,构建命令等进行了标准化定义。
Maven提供了一个免费的中央仓库,在其中几乎可以找到任何的流行开源类库。
Maven是跨平台的,在Windows、Linux、Mac上,都可以使用同样的命令。
Maven 作用
一键构建
通过 Maven 工具,可以使用简单的命令轻松完成编译、测试、运行、打包、安装、部署等一系列过程等构建工作
依赖管理
Maven 有一个专门存放 jar 的仓库,仓库的 jar 都有自己的坐标,使用 Maven 时,只需要在 pom 文件中配置对应 jar 的坐标即可
运行项目时,只需要根据 Maven 仓库地址和 jar 坐标加载到对应的 jar 就能成功运行项目
运行项目时,只需要根据 Maven 仓库地址和 jar 坐标加载到对应的 jar 就能成功运行项目
Maven 安装
详见 Maven 安装文档
Maven 工程类型和结构
工程类型
pom
POM 工程是逻辑工程,Maven 不会对该类型工程做打包处理,因为这些工程基本上不包含具体的业务,大多数是工具类,用来提供给其他工程使用
jar
普通 Java 工程,在打包时会将项目达成 Jar 包
war
Java Web 工程,在打包时会将项目达成 war 包
工程结构
src:源代码
src/main/java:存放项目的java文件
src/main/resources:存放项目资源文件,如配置文件
src/test/java:存放项目的测试文件
src/test/resources:存放测试时的资源文件
target:编译生成的文件
pom.xml:Maven 工程配置文件,如坐标信息等
Maven 构建
Maven 编译项目的生命周期
验证 validate
验证项目是否正确
编译 compile
源代码编译
测试 Test
使用适当的单元测试框架(例如 junit)运行测试
打包 package
创建 JAR/WAR 包
检查 verify
对集成测试的结果进行检查,以保证质量达标
安装 install
安装打包的项目到本地仓库,以供其他项目使用
部署 deploy
拷贝最终的工程包到远程仓库中,以共享给其他开发人员和工程
maven有三套相互独立的生命周期。分为是构建生命周期,clean生命周期(清理构建后的文件)、site生命周期(生成项目报告)。
Maven 常用命令
mvn clean
清除编译的 class 文件,即删除 target 目录
mvn validate
验证项目是否正确
mvn compile
编译 maven 项目
mvn test
编译 maven 项目及运行测试文件
mvn package
编译 maven 项目及运行测试文件,并打包
mvn install
编译 maven 项目及运行测试文件并打包,并发布到本地仓库
mvn deploy
部署项目到远程仓库
mvn tomcat7:run
使用 tomcat 运行项目
Maven 仓库类型
本地仓库
本地仓库指用户计算机中的文件夹。用来存储从远程仓库或中央仓库下载的 jar 包,只有下载到本地仓库的 jar 包才能使用,
项目使用 jar 包时优先从本地仓库查找
项目使用 jar 包时优先从本地仓库查找
远程仓库
远程仓库一般指私服,它是架设在局域网的仓库服务,可以从中央仓库下载资源,供局域网使用,从而减少每个程序员都从中央仓库下载浪费的带宽
远程仓库不是必须配置的,如果本地仓库没 jar 包,也没有配置远程仓库,则会直接从中央仓库下载
中央仓库
中央仓库是互联网上的服务器,是 Maven 提供的最大的仓库,里面拥有最全的 jar 包资源。
如果项目需要的 jar 包,本地仓库和远程仓库都没有,则会去中央仓库下载,下载到本地仓库使用。
如果项目需要的 jar 包,本地仓库和远程仓库都没有,则会去中央仓库下载,下载到本地仓库使用。
Maven 配置文件
配置本地仓库
<settings>中添加如下标签: <localRepository>本地仓库地址</localRepository>
配置镜像
在<settings>下的<mirrors>中添加标签即可配置镜像
id
指定镜像 ID
mirrorOf
匹配中央仓库
name
指定镜像名称
url
指定镜像路径
配置 JDK 版本
在<settings>下的<profiles>中添加标签即可配置JDK版本
Maven 工程开发
pom 文件配置
groupId
groupId 一般定义项目组名,命名规则使用反向域名
artifactId
artifactId 一般定义项目名,命名使用小写字母。项目发布后,它的坐标是 groupId+artifactId
version
version 定义版本号。版本号一般有三段,第一段:革命性的产品升级。
第二段:新功能版本。第三段:修正一些 bug
第二段:新功能版本。第三段:修正一些 bug
packaging
packaging 定义打包方式
properties
定义一些配置信息
dependencies
定义依赖的 jar 包坐标
plugins
加载第三方插件
jar 依赖范围
compile
默认范围。表示该依赖在编译和运行时生效,项目打包时也会将该依赖打包进去
provided
使用此依赖范围的 Maven 依赖,编译和测试时有效,但在运行时无效
runtime
runtime 范围表明编译时不需要生效,而只在运行时生效
test
test 范围表明使用此依赖范围的依赖,只在编译和运行测试代码的时生效,程序的正常运行不需要此类依赖
system
如果有些你依赖的 jar包没有 Maven 坐标的,它完全不在 Maven体系中,这时候你可以把它下载到本地硬盘,然后通过 system 来引用。(不推荐使用)
0 条评论
下一页