Maven学习笔记(4)maven配置插件和Maven 的常用命令

Idea创建maven项目并配置

idea自带maven,但是为了方便自己配置,最好使用自己的maven环境,在File菜单中的New Projects Settings中设置,这样在新创建项目中就会自动添加自己配置的maven环境,不需要手动更改。
在这里插入图片描述

Maven常用命令

Maven 对所有的功能都提供相对应的命令,maven 三大功能:管理依赖、构建项目、管理项目信息。

Maven 提供一个项目构建的模型,把编译、测试、打包、部署等都对应成一个个的生命周期阶段,并对每一个阶段提供相应的命令,程序员只需要掌握一小堆命令,这些小命令会调用不同的插件,这些插件是帮助执行相应过程的程序,就可以完成项目的构建过程。

创建maven项目的

我使用的idea创建的空项目,在空项目中添加一个maven模块。
在这里插入图片描述
但是项目中经常遇见一些配置文件,所以需要自己添加resource目录,并标志为resources目录。

在这里插入图片描述
创建完成之后默认的pom文件为(maven3.6.3):

<?xml version="1.0" encoding="UTF-8"?>

<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是承担这个项目或者模块所在的地址倒置,一般练习随变取 -->
  <groupId>org.example</groupId>
  <!-- artifactId是项目模块的名称-->
  <artifactId>maventest</artifactId>
  <!-- artifactId是项目模块的版本,默认是1.0-SNAPSHOT,可以更改-->
  <version>1.0-SNAPSHOT</version>

  <name>maventest</name>
  <!-- FIXME change it to the project's website -->
  <url>http://www.example.com</url>

  <!-- properties是这个项目的一些配置,编码设置,编译和运行所使用的jdk版本,默认是1.7,还可以增加的变量之类的-->
  <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
  <!-- maven.compiler.source是编译所用的jdk版本-->
    <maven.compiler.source>1.7</maven.compiler.source>
  <!-- maven.compiler.target运行在那个jdk版本上-->
    <maven.compiler.target>1.7</maven.compiler.target>
  </properties>


  <!-- 相关依赖-->
  <dependencies>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>4.11</version>
      <scope>test</scope>
    </dependency>
  </dependencies>

  <!-- 插件管理,不添加也会默认存在,maven的生命周期就是依靠这些插件实现的-->
  <build>
  <!-- pluginManagement是表示插件声明,即你在项目中的pluginManagement下声明了插件,Maven不会加载该插件,pluginManagement声明可以被继承-->
    <pluginManagement><!-- lock down plugins versions to avoid using Maven defaults (may be moved to parent pom) -->
      <plugins>
        <!-- clean lifecycle, see https://maven.apache.org/ref/current/maven-core/lifecycles.html#clean_Lifecycle -->
        <plugin>
          <artifactId>maven-clean-plugin</artifactId>
          <version>3.1.0</version>
        </plugin>
        <!-- default lifecycle, jar packaging: see https://maven.apache.org/ref/current/maven-core/default-bindings.html#Plugin_bindings_for_jar_packaging -->
        <plugin>
          <artifactId>maven-resources-plugin</artifactId>
          <version>3.0.2</version>
        </plugin>
        <plugin>
          <artifactId>maven-compiler-plugin</artifactId>
          <version>3.8.0</version>
        </plugin>
        <plugin>
          <artifactId>maven-surefire-plugin</artifactId>
          <version>2.22.1</version>
        </plugin>
        <plugin>
          <artifactId>maven-jar-plugin</artifactId>
          <version>3.0.2</version>
        </plugin>
        <plugin>
          <artifactId>maven-install-plugin</artifactId>
          <version>2.5.2</version>
        </plugin>
        <plugin>
          <artifactId>maven-deploy-plugin</artifactId>
          <version>2.8.2</version>
        </plugin>
        <!-- site lifecycle, see https://maven.apache.org/ref/current/maven-core/lifecycles.html#site_Lifecycle -->
        <plugin>
          <artifactId>maven-site-plugin</artifactId>
          <version>3.7.1</version>
        </plugin>
        <plugin>
          <artifactId>maven-project-info-reports-plugin</artifactId>
          <version>3.0.0</version>
        </plugin>
      </plugins>
    </pluginManagement>
  </build>
</project>

mvn clean

清理(会删除原来编译和测试的目录,即 target 目录,但是已经 install 到仓库里的包不会删除)

使用的是maven-clean-plugin:3.1.0这个插件的功能。
在这里插入图片描述

mvn compile

编译主程序,maven项目目录为/src/main/java(会在当前目录下生成一个 target,里边存放编译主程序之后生成的字节码文件)

使用的是maven-resources-plugin:3.0.2和 maven-compiler-plugin:3.8.0,其中maven-resources-plugin:3.0.2的作用是将resources的文件一起放入target/classes中。
在这里插入图片描述

mvn test-compile

编译测试程序,maven项目项目目录为/src/test/java,(会在当前目录下生成一个 target,里边存放编译测试程序之后生成的字节码文件)

基本和mvn compile类似,不会编译之后存放的文件放在了target/test-classes中。

mvn test-compile会默认执行前面compile的生命周期,所以会用到四个插件。

在这里插入图片描述

mvn test

测试(会生成一个目录surefire-reports,保存测试结果)

测试程序如下:

public class AppTest 
{
    
    
    /**
     * Rigorous Test :-)
     */
    @Test
    public void testAdd(){
    
    
        System.out.println("[INFO] 测试App类中的方法");
        App app = new App();
        int set = app.add(30,60);
        Assert.assertEquals(90 , set);
    }
}

执行之后,结果如下:
在这里插入图片描述

mvn test执行,会自动执行从compile开始的生命周期。

mvn package

打包主程序(会编译、编译测试、测试、并且按照 pom.xml 配置把主程序打包生成 jar 包或者 war 包)

通过在pom文件开始添加packaging选择是jar或者是war等。
在这里插入图片描述
打包之后就会出现相应的包,包的命名就是和这两个标签的结合:
在这里插入图片描述

mvn install

安装主程序(会把本工程打包,并且按照本工程的坐标保存到本地仓库中)

mvn deploy

部署主程序(会把本工程打包,按照本工程的坐标保存到本地库中,并且还会保存到私服仓库中。
还会自动把项目部署到 web 容器中)。

猜你喜欢

转载自blog.csdn.net/liutao43/article/details/113002925