1. pom文件 12
即 Project Object Model 项目对象模型。Maven 把一个项目的结构和内容抽象成一个模型,在 xml 文件中进行声明,以方便进行构建和描述,pom.xml 是 Maven 的灵魂。所以,maven 环境搭建好之后,所有的学习和操作都是关于 pom.xml 的。
1.1 pom.xml 初识: 12
1.2 pom:项目对象模型,是一个pom.xml文件 12-13
1)坐标:唯一值, 在互联网中唯一标识一个项目的
公司域名的倒写
自定义项目名称
自定版本号
https://mvnrepository.com/ 搜索使用的中央仓库, 使用groupId 或者 artifactId作为搜索条件
2) packaging: 打包后压缩文件的扩展名,默认是jar ,web应用是war
packaging 可以不写, 默认是jar
3) 依赖
dependencies 和dependency ,相当于是 java代码中import
你的项目中要使用的各种资源说明, 比我的项目要使用mysql驱动
<dependencies>
<!--依赖 java代码中 import -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.9</version>
</dependency>
</dependencies>
4)properties:设置属性
5)build : maven在进行项目的构建时, 配置信息,例如指定编译java代码使用的jdk的版本等
2. 坐标(gav) 14
Maven把任何一个插件都作为仓库中的一个项目进行管理,用一组(三个)向量组成的坐标来表示。坐标在仓库
中可以唯一定位一个Maven项目。
groupId:组织名,通常是公司或组织域名倒序+项目名
artifactId:模块名,通常是工程名
version:版本号
需要特别指出的是,项目在仓库中的位置是由坐标来决定的:groupId、artifactId和version决定项目在仓库中
的路径,artifactId和version决定jar包的名称。
3. 依赖(dependency) 13-14
一个 Maven 项目正常运行需要其它项目的支持,Maven 会根据坐标自动到本地仓库中进行查找。
对于程序员自己的 Maven 项目需要进行安装,才能保存到仓库中。
不用 maven 的时候所有的 jar 都不是你的,需要去各个地方下载拷贝,用了 maven 所有的 jar 包都是你的,想
要谁,叫谁的名字就行。maven 帮你下载。
pom.xml 加入依赖的方式:
log4j 日志依赖
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.17</version>
</dependency>
junit 单元测试依赖
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.11</version>
</dependency>
4. maven的声明周期 14
对项目的构建是建立在生命周期模型上的,它明确定义项目生命周期各个阶段,并且对于每一个阶段提供相对应的命令,对开发者而言仅仅需要掌握一小堆的命令就可以完成项目各个阶段的构建工作。构建项目时按照生命周期顺序构建,每一个阶段都有特定的插件来完成。不论现在要执行生命周期中的哪个阶段,都是从这个生命周期的最初阶段开始的。对于我们程序员而言,无论我们要进行哪个阶段的构建,直接执行相应的命令即可,无需担心它前边阶段是否构建,Maven 都会自动构建。这也就是 Maven 这种自动化构建工具给我们带来的好处。
4.1 Maven 的常用命令 14
4.1.1 maven生命周期, maven的命令,maven的插件 14、17
maven的生命周期:就是maven构建项目的过程,清理,编译,测试,报告,打包,安装,部署
maven的命令:maven独立使用,通过命令,完成maven的生命周期的执行。
maven可以使用命令,完成项目的清理,编译,测试等等
maven的插件: maven命令执行时,真正完成功能的是插件,插件就是一些jar文件, 一些类。
Maven 对所有的功能都提供相对应的命令,要想知道 maven 都有哪些命令,那要看 maven 有哪些功能。一开始就跟大家说了,maven 三大功能:管理依赖、构建项目、管理项目信息。管理依赖,只需要声明就可以自动到仓库下载;管理项目信息其实就是生成一个站点文档,一个命令就可以解决,最后再说;那 maven 功能的主体其实就是项目构建。
Maven 提供一个项目构建的模型,把编译、测试、打包、部署等都对应成一个个的生命周期阶段,并对
每一个阶段提供相应的命令,程序员只需要掌握一小堆命令,就可以完成项目的构建过程。
mvn clean 清理(会删除原来编译和测试的目录,即 target 目录,但是已经 install 到仓库里的包不会删除)
mvn compile 编译主程序(会在当前目录下生成一个 target,里边存放编译主程序之后生成的字节码文件,编译main/java/目录下的java 为class文件, 同时把class拷贝到 target/classes目录下面
把main/resources目录下的所有文件 都拷贝到target/classes目录下)
mvn test-compile编译测试程序(会在当前目录下生成一个 target,里边存放编译测试程序之后生成的字节码文件)
mvn test 测试(会生成一个目录surefire-reports,保存测试结果)
mvn package打包主程序(会编译、编译测试、测试、并且按照 pom.xml 配置把主程序打包生成 jar 包或者 war 包)
mvn install 安装主程序(会把本工程打包,并且按照本工程的坐标保存到本地仓库中)
mvn deploy 部署主程序(会把本工程打包,按照本工程的坐标保存到本地库中,并且还会保存到私服仓库中。
还会自动把项目部署到 web 容器中)。
注意:执行以上命令必须在命令行进入 pom.xml 所在目录
5. 单元测试(测试方法): 15
用的是junit, junit是一个专门测试的框架(工具)。
junit测试的内容: 测试的是类中的方法, 每一个方法都是独立测试的。方法是测试的基本单位(单元)。
maven借助单元测试,批量的测试你类中的大量方法是否符合预期的。
5.1 使用步骤 15
1.加入依赖,在pom.xml加入单元测试依赖
<!-- 单元测试 -->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.11</version>
<scope>test</scope>
</dependency>
5.2 测试 15-17
在maven项目中的src/test/java目录下,创建测试程序。
推荐的创建类和方法的提示:
1.测试类的名称 是Test + 你要测试的类名
2.测试的方法名称 是:Test + 方法名称
例如你要测试HelloMaven ,
创建测试类 TestHelloMaven
@Test
public void testAdd(){
测试HelloMaven的add方法是否正确
}
其中testAdd叫做测试方法,它的定义规则
1.方法是public的,必须的
2.方法没有返回值, 必须的
3.方法名称是自定义的,推荐是Test + 方法名称
4.在方法的上面加入 @Test
代码在E:\java学习 \Maven\course\course1\Hello\src\test\java\com\bjpowernode
TestHelloMaven.java 17
先使用mvn clean清理
在使用mvn compile 编译主程序
然后使用mvn test-compile编译测试程序
最后使用mvn test测试成功与否
package com.bjpowernode;
import org.junit.Assert;
import org.junit.Test;
public class TestHelloMaven{
@Test
public void testAdd(){
System.out.println("===maven juint testAdd()===");
HelloMaven hello = new HelloMaven();
int res = hello.add(10,20);
//验证10+20是不是30,junit提供的方法对比结果
//assertEquals(期望值,实际值),两个值相等就是正确的,不等就抛出异常
Assert.assertEquals(30,res);
}
@Test
public void testAdd2(){
System.out.println("###maven juint testAdd()###");
HelloMaven hello = new HelloMaven();
int res = hello.add(30,20);
//验证10+20是不是30,junit提供的方法对比结果
//assertEquals(期望值,实际值),两个值相等就是正确的,不等就抛出异常
Assert.assertEquals(50,res);
}
}
标签:Maven,项目,单元测试,maven,pom,测试,讲解,mvn
From: https://blog.51cto.com/u_15784725/6346440