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