本文已参与「新人创作礼」活动,一起开启掘金创作之路。
今天在学习尚硅谷的maven时,所做的总结
maven的构建命令有5个,分别是清理操作,编译操作,测试操作,打包操作以及安装操作。
在演示构建命令之前,我们需要先创建一个maven工程。创建maven工程的方式有两种,第一种是用maven的命令来创建(mvn archetype:generate),第二种是用idea来创建。
我创建的maven项目结构如下:
当maven项目创建完成之后,我们可以往里面写代码,具体哪些类大家可以看上图,类的内容如下:
package com.atguigu.maven;
public class Calculator {
public int sum(int i, int j){
return i + j;
}
}
package com.atguigu.maven;
import org.junit.Test;
import com.atguigu.maven.Calculator;
// 静态导入的效果是将Assert类中的静态资源导入当前类
// 这样一来,在当前类中就可以直接使用Assert类中的静态资源,不需要写类名
import static org.junit.Assert.*;
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 method have bean called");
}
}
pom文件内容如下:
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.atguigu.maven</groupId>
<artifactId>pro01-maven-java</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>jar</packaging>
<name>pro01-maven-java</name>
<url>http://maven.apache.org</url>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<scope>test</scope>
</dependency>
</dependencies>
</project>
注意事项
运行 Maven 中的构建操作相关的命令时,必须进入到pom.xml所在的目录。如果没有在 pom.xml 所在的目录运行 Maven 的构建命令,那么会看到下面的错误信息:
The goal you specified requires a project to execute but there is no POM in this directory
1.编译操作
主程序编译:mvn compile。主体程序编译结果存放的目录:target/classes
测试程序编译:mvn test-compile。测试程序编译结果存放的目录:target/test-classes
编译主程序后(如果你maven是刚刚安装的,那么它会自动下载一些插件):
编译测试程序后:
2.清除操作
mvn clean:删除 target 目录。程序编译后,会生成一个target目录,这个目录存放的是字节码文
运行命令后结果:
target目录删除了
3.测试操作
mvn test。测试的报告存放的目录:target/surefire-reports
大家看上面的测试类,那里有个测试方法testSum()
4.打包操作
mvn package。 打包的结果——jar 包,存放的目录:target
打包的jar包其实是个压缩文件,你可以解压出来的。对了测试类是不会被打包的,毕竟测试的东西上线的时候用不着。
5.安装操作
mvn install。安装的效果是将本地构建过程中生成的 jar 包存入 Maven 本地仓库。这个 jar 包在 Maven 仓库中的路径是根据它的坐标生成的。
<groupId>com.atguigu.maven</groupId>
<artifactId>pro01-maven-java</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>jar</packaging>
另外,安装操作还会将 pom.xml 文件转换为 XXX.pom 文件一起存入本地仓库。所以我们在 Maven 的本地仓库中想看一个 jar 包原始的 pom.xml 文件时,查看对应 XXX.pom 文件即可,它们是名字发生了改变,本质上是同一个文件。