一、在 Maven 工程中编写代码

1、编写主体程序

images

主体程序指的是被测试的程序,同时也是将来在项目中真正要使用的程序。

1
2
3
4
5
6
7
8
9
package com.atguigu.maven;

public class Calculator {

public int sum(int i, int j){
return i + j;
}

}

2、测试程序

images

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
package com.atguigu.maven;

// org.junit.Test这个类是通过test范围引入当前工程的
import org.junit.Test;
import com.atguigu.maven.Calculator;

// 静态导入的效果是将Assert类中的静态资源导入当前类
// 这样一来,在当前类中就可以直接使用Assert类中的静态资源,不需要写类名
import static org.junit.Assert.*;

// Calculator这个类就是通过compile范围引入当前工程的
import com.atguigu.maven.Calculator;

// CalculatorTest类是test目录下的程序,可以使用compile范围引入的依赖
// CalculatorTest类是test目录下的程序,可以使用test范围引入的依赖
public class CalculatorTest {

@Test
public void testSum(){

// 1.创建Calculator对象
Calculator calculator = new Calculator();

// 2.调用Calculator对象的方法,获取到程序运行实际的结果
int actualResult = calculator.sum(5, 3);

// 3.声明一个变量,表示程序运行期待的结果
int expectedResult = 8;

// 4.使用断言来判断实际结果和期待结果是否一致
// 如果一致:测试通过,不会抛出异常
// 如果不一致:抛出异常,测试失败
assertEquals(expectedResult, actualResult);

System.out.println("test running...");
}
}

二、执行 Maven 的构建命令

1、要求

运行 Maven 中和构建操作相关的命令时,必须进入到 pom.xml 所在的目录。如果没有在 pom.xml 所在的目录运行 Maven 的构建命令,那么会看到下面的错误信息:

1
The goal you specified requires a project to execute but there is no POM in this directory

mvn -v 命令和构建操作无关,只要正确配置了 PATH,在任何目录下执行都可以。

第一次运行相关命令会把命令相关的 jar 包下载下来

2、清理操作

1
mvn clean

效果:删除 target 目录

3、编译操作

主程序编译:

1
mvn compile

测试程序编译:

1
mvn test-compile

主体程序编译结果存放的目录:target/classes

测试程序编译结果存放的目录:target/test-classes

4、测试操作

1
mvn test

测试的报告会存放在 target/surefire-reports 目录下

5、打包操作

1
mvn package

打包的结果会存放在 target 目录下

6、安装操作

1
mvn install
1
2
3
[INFO] Installing D:\My\maven-workspace\space\pro01-maven-java\target\pro01-maven-java-1.0-SNAPSHOT.jar to D:\My\Maven-rep\com\atguigu\maven\pro01-maven-java\1.0-SNAPSHOT\pro01-maven-java-1.0-SNAPSHOT.jar

[INFO] Installing D:\My\maven-workspace\space\pro01-maven-java\pom.xml to D:\My\Maven-rep\com\atguigu\maven\pro01-maven-java\1.0-SNAPSHOT\pro01-maven-java-1.0-SNAPSHOT.pom

安装的效果是将本地构建过程中生成的 jar 包存入 Maven本地仓库。这个 jar 包在 Maven 仓库中的路径是根据它的坐标生成的。

坐标信息如下:

1
2
3
<groupId>com.atguigu.maven</groupId>
<artifactId>pro01-maven-java</artifactId>
<version>1.0-SNAPSHOT</version>

在 Maven 仓库中生成的路径如下:

1
D:\My\Maven-rep\com\atguigu\maven\pro01-maven-java\1.0-SNAPSHOT\pro01-maven-java-1.0-SNAPSHOT.jar

另外,安装操作还会将 pom.xml 文件转换为 XXX.pom 文件一起存入本地仓库。所以我们在 Maven 的本地仓库中想看一个 jar 包原始的 pom.xml 文件时,查看对应 XXX.pom 文件即可,它们是名字发生了改变,本质上是同一个文件。