Maven教程--下(包括手动实现)

138 阅读4分钟

Maven教程--下(包括手动实现)

前言

注意本篇是需要一定的maven基础的 如果没有请移步Maven教程--上

手动创建Maven 项目- 理解Maven 底层机制

需求说明/图解

用手工的方式,创建maven 项目, 深刻理解Maven 工作机制

完成功能-说明

  1. 编写一个类, 有一个方法sum,可以返回两个数的和
  2. 编写测试类TestSum, 可以测试sum 是否正确.
  3. 使用指令完成Maven 的编译(complile)、测试(test)、打包(package)、安装(install)、清理(clean)等操作

手写方式

完成代码编写

  1. 先根据maven 项目的结构要求,在d 盘: 创建项目结构(如图)

在这里插入图片描述

  1. 创建\Hello.java ,说明: 这个文件可以手写, 也可以从快速入门项目拷贝一份.
public class Hello {
    public String sum(int n1, int n2) {
        System.out.println("sum= " + (n1 + n2));
        return "sum= " + (n1 + n2);
    }
}
  1. 创建HelloTest.java,说明: 这个文件可以手写, 也可以从快速入门项目拷贝一份, 同时注意这个文件是在src\test.... 下的..

public class HelloTest {

@Test
public void testSum() {

    Hello hello = new Hello();
    String res = hello.sum(1, 9);

    //使用断言
    /**
     * 1.Assert 是一个断言类,(就是判断实际返回的值和期望值是否相同)
     * 2.如果res 和 "sum=10" 是相同的,则通过断言
     * 3.如果res 和 "sum=10" 是不相同的,则给出提示
     *
     */
    Assert.assertEquals("sum=10", res);
}
  1. 创建pom.xml, 从快速入门项目拷贝一份即可. 放在和src 同级目录即可, 提示:使用记事本来保存, 保证该文件的编码是utf-8
    <!--
        解读:modelVersion
        1. 描述这个pom文件/pom模型遵循的哪个版本
        2. 对应maven2 和 maven3 而言, 这里的modelVersion只能是4.0.0
    -->
    <modelVersion>4.0.0</modelVersion>

    <!--
        解读: 下面是指定该项目的坐标, 是创建项目时,程序员指定
        1. groupId: 组织名
        2. artifactId: 项目名
        3. version: 版本
    -->
    <groupId>com.wedu</groupId>
    <artifactId>java-project-maven</artifactId>
    <version>1.0-SNAPSHOT</version>
    <!--
        解读
        1. 这里就是引入项目需要的jar包, 类似传统项目的import jar的作用
        2. 在 dependencies标签内, 可以指定多个需要依赖的jar /导入jar
        3. 引入的jar包需要一个完整的jar包坐标, 从mvn仓库查询得到
    -->
    <dependencies>
        <dependency>
            <!-- 依赖jar的 groupId : 组织名-->
            <groupId>junit</groupId>
            <!-- 依赖jar的 artifactId : 项目名-->
            <artifactId>junit</artifactId>
            <!-- 依赖jar的 version : 版本-->
            <version>4.12</version>
        </dependency>

在这里插入图片描述

完成编译

  1. 执行如下指令,完成maven 项目的编译,会得到源代码对应的class 文件(如图)

在这里插入图片描述

  1. 编程成功,会自动创建target 目录,并生成对应的.class 文件(如图)

在这里插入图片描述

  1. 细节说明: 第一次速度慢,需要下载相关jar,后面就快了.

完成测试

  1. 执行如下指令,完成maven 项目的测试,(如图)

在这里插入图片描述

  1. 测试指令执行完毕,会生成Test 源文件的class , 还会输出测试结果.

在这里插入图片描述

在这里插入图片描述

  1. 细节说明: 第一次速度慢,需要完成一些初始化工作,后面就快了.

完成打包

  1. 执行如下指令,完成maven 项目的打包,输出jar, 可以供其它模块使用(如图)

在这里插入图片描述

  1. 打包后,在target 目录生成对应的打包文件jar

在这里插入图片描述

完成安装

  1. 为了演示方便, 把当前maven 的settings.xml 的仓库恢复到默认的, 修改D:\program\apache-maven-3.6.3-bin\apache-maven-3.6.3\conf\settings.xml

在这里插入图片描述

  1. 执行install 指令,能完成maven 项目的安装,会把打包得到的jar, 提交到本地仓库

在这里插入图片描述

在这里插入图片描述

  1. 说明: 如果没有修改settings.xml 成默认的仓库路径, install 后, 生成的jar 会在指定的仓库路径下.
  2. 注意当把hello-project-1.0.jar 提交到本地仓库后,该jar 也可以被其他maven 项目使用了,非常方便

完成清理

  1. 执行如下指令,完成maven 项目的清理,会清除生成的target 目录

在这里插入图片描述

  1. 应用场景,比如我们希望把源码进行拷贝或移植, 或者希望来一次全新的bulid,就可以先进行clean

小结Maven 构建指令

● 说明: Maven 构建命令使用mvn 开头,后面添加功能参数,可以一次执行多个命令,使用空格分隔

mvn compile #编译
mvn clean #清理
mvn test #测试
mvn package #打包
mvn install #安装

IDEA 创建Maven Web 工程

需求说明/图解

使用IDEA 创建Maven WEB 项目, 可以运行hello,world 页面

注意体会Maven WEB 项目和前面创建的Maven java 项目不同

创建Maven web 项目

创建maven web 工程

web-hello-maven 工程

在这里插入图片描述

在这里插入图片描述

创建成功的maven web 项目结构

在这里插入图片描述

创建的pom.xml

<?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>

  <!--
  解读
  1. groupId 、artifactId、version就是 maven项目坐标
  2. packaging: 打包方式,默认是jar, 因为当前是web项目,所以这里打包成war
  -->
  <groupId>com.wyxedu</groupId>
  <artifactId>web-hello-maven</artifactId>
  <version>1.0-SNAPSHOT</version>
  <packaging>war</packaging>

  <name>web-hello-maven Maven Webapp</name>
  <!-- FIXME change it to the project's website -->
  <url>http://www.example.com</url>

  <!-- maven项目的属性, 根据实际情况,可以修改 -->
  <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <maven.compiler.source>1.8</maven.compiler.source>
    <maven.compiler.target>1.8</maven.compiler.target>
  </properties>


  <dependencies>
    <!-- 默认引入的jar -->
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>4.11</version>
      <scope>test</scope>
    </dependency>
  </dependencies>

  <!--默认引入的maven插件, 前面说过mvn的各种指令compile/install/test等都是由插件完成的 -->

  <build>
    <finalName>web-hello-maven</finalName>
    <pluginManagement><!-- lock down plugins versions to avoid using Maven defaults (may be moved to parent pom) -->
      <plugins>
        <plugin>
          <artifactId>maven-clean-plugin</artifactId>
          <version>3.1.0</version>
        </plugin>
        <!-- see http://maven.apache.org/ref/current/maven-core/default-bindings.html#Plugin_bindings_for_war_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-war-plugin</artifactId>
          <version>3.2.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>
      </plugins>
    </pluginManagement>
  </build>
</project>

配置Tomcat 服务器&运行

  1. 为maven web 项目配置tomcat

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

war:先打包成war 包,再把该war 包部署到服务器上

war exploded:直接把文件夹、class 文件等等移到Tomcat 上进行部署。因此这种方式支持热部署,一般在开发的时候都是使用这种模式

在这里插入图片描述