Maven的构建命令

258 阅读3分钟

本文已参与「新人创作礼」活动,一起开启掘金创作之路。

今天在学习尚硅谷的maven时,所做的总结

maven的构建命令有5个,分别是清理操作,编译操作,测试操作,打包操作以及安装操作

在演示构建命令之前,我们需要先创建一个maven工程。创建maven工程的方式有两种,第一种是用maven的命令来创建(mvn archetype:generate),第二种是用idea来创建。

image.png

我创建的maven项目结构如下:

image.png

当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

image.png

1.编译操作

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

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

编译主程序后(如果你maven是刚刚安装的,那么它会自动下载一些插件):

image.png

编译测试程序后:

image.png

image.png

2.清除操作

mvn clean:删除 target 目录。程序编译后,会生成一个target目录,这个目录存放的是字节码文

运行命令后结果:

image.png target目录删除了

image.png

3.测试操作

mvn test。测试的报告存放的目录:target/surefire-reports

大家看上面的测试类,那里有个测试方法testSum()

image.png

4.打包操作

mvn package。 打包的结果——jar 包,存放的目录:target

image.png 打包的jar包其实是个压缩文件,你可以解压出来的。对了测试类是不会被打包的,毕竟测试的东西上线的时候用不着。

image.png

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>

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