Maven 使用

2023-09-16 20:48:45

一、初始 Maven(了解)

1、项目遇到的问题

  • 构建:编译代码,运行测试,打包,部署应用,运行服务器等;
  • 依赖:项目依赖大量的第三方包,第三方包又依赖另外的包,对依赖包的管理非常麻烦。

2、Maven 定义和作用

  • Maven 翻译为“知识的积累”,“专家”,“行家”,是一个跨平台的项目管理工具;
  • Maven 主要用作基于 Java 平台的项目(Maven 本身也是 Java 编写的)的构建、依赖包管理和项目信息管理;
  • Maven 能提供一种项目的配置,配置好的项目,只需要运行一条简单的命令,就能完成重复的,繁琐的构建动作;
  • Maven 能提供一种项目的依赖配置,配置好的项目,Maven 能自动的从 Maven 的中央仓库中帮我们下载并管理项目依赖的 jar 包,并且还能自动的管理这些 jar 包依赖的其他 jar 包;
  • Maven 提供了一种标准的项目目录结构,测试命名规则等项目的最佳实践方案,统一了不同项目的学习成本(约定大于配置)。

二、Maven 安装(掌握)

1、检查 JDK 的版本

因为 Maven 不同的版本对 JDK 是有要求的,具体请看官网
在命令行输入 java -version,查询安装 JDK 是否正确并查询安装的版本。若没有配置好的话,按照一下步骤配置好:

  • 添加 JAVA_HOME,需要指向 JDK 安装目录;
  • 添加 PATH,添加 %JAVA_HOME%\bin。

2、安装 Maven

把 apache-maven-x.x.x-bin.zip 解压到目录中(目录路径最好不要有空格和中文)。

3、配置环境变量

  • 配置环境变量,MAVEN_HOME,指向 maven 的根目录;
  • 配置环境变量 Path,将 %MAVEN_HOME%\bin 追加到 Path 中。

3.1、Win10 配置

在这里插入图片描述

在这里插入图片描述

4、验证 Maven 安装

打开命令行窗口,输入入 mvn –v 执行,若执行类似如下效果即代表安装成功。

在这里插入图片描述

三、Maven Hello World(了解)

在这里插入图片描述

把事先准备好的 Maven 项目,在命令行下输入命令试下:

  • mvn compile:编译
  • mvn clean:清除
  • mvn test:测试
  • mvn package:打包
  • mvn install:打包,本地仓库也放一份

四、Maven 设置(掌握)

1、本地仓库

运行过 Maven 命令才会在你的用户目录生成一个 .m2 目录,该目录下有个目录名 repository,这个就是所谓的本地仓库,主要存放是一些下载的 jar 文件。

本地仓库默认位置在用户目录/.m2/repository,本地仓库不建议在系统盘,最佳实践:

  • 将 Maven 根目录的 conf/settings.xml 拷贝到 .m2 中,作为个人 Maven 配置文件;

    maven根目录下拷贝settings.xml文件内容相对多,看不懂, 可以拷贝

    day02 Maven\课堂资料\配置和仓库.m2\settings.xml

  • 在 settings.xml 文件中 修改本地仓库的位置。

<?xml version="1.0" encoding="UTF-8"?>
<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd">
    <!-- 本地仓库地址 -->
    <localRepository>你本地仓库的目录位置</localRepository>
</settings>

2、配置中央仓库镜像

在有网情况下,官方中央仓库服务器在国外,所以很大可能出现下载失败的问题,所以我们配置一个中央仓库的镜像来降低下载失败的概率。

<?xml version="1.0" encoding="UTF-8"?>
<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd">
    <!-- 本地仓库地址 -->
    <localRepository>你本地仓库的目录位置</localRepository>
    <mirrors>
        <!-- 阿里仓库镜像 -->
        <mirror>
            <id>alimaven</id>
            <name>aliyun maven</name>
            <url>http://maven.aliyun.com/nexus/content/groups/public/</url>
            <mirrorOf>central</mirrorOf>
        </mirror>
    </mirrors>
</settings>

五、IDEA 中 Maven 的配置(掌握)

配置安装的 Maven,设置 setttings.xml 和本地仓库。

在这里插入图片描述

在这里插入图片描述

六、搭建基于 Maven 构建的 JavaSE 项目(掌握)

1、创建项目

1.1、选择建的是 Maven 项目

在这里插入图片描述

确定后之后点击 Next。

1.2、填写对应项目信息

在这里插入图片描述

填完之后点击 Next。

1.3、确定项目存储位置

在这里插入图片描述

确定完之后点击 Finish,之后工具会打开解析项目,要等一会儿。

2、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>

    <groupId>cn.wolfcode</groupId>
    <artifactId>maven-se</artifactId>
    <version>1.0.0</version>

</project>

3、添加依赖

3.1、利用索引添加依赖

所谓建索引,就对本地仓库的依赖建立索引,若本地仓库存在 10 个依赖,那么在添加的时候可以搜索得出来,很方便在 pom.xml 添加。但注意搜索得出来是本地仓库已有的前提下。而这个索引在 IDEA 开发工具会自动建好,直接使用即可。

3.1.1、添加 dependencies 元素

在这里插入图片描述

3.1.2、添加 dependency 元素

在这里插入图片描述

3.1.3、填选依赖名称

在这里插入图片描述

3.1.4、选择依赖的版本

在这里插入图片描述

3.1.5、填写依赖的作用域

在这里插入图片描述

3.1.6、让工具自动解析修改的内容

在这里插入图片描述

3.1.7、验证依赖添加成功

在这里插入图片描述

3.2、网站搜索拷贝添加依赖

搜索依赖的网站

3.2.1、在搜索栏中输入要添加的依赖

在这里插入图片描述

3.2.2、选择所要的依赖和其版本

在这里插入图片描述

在这里插入图片描述

3.2.3、拷贝对应配置到 pom.xml 中

在这里插入图片描述

4、使用 Maven 命令

在 Maven Projects 窗口,双击对应命令即可:

在这里插入图片描述

七、搭建基于 Maven 构建的 JavaWeb 项目(掌握)

1、创建项目

1.1、选择建的是 Maven 项目

在这里插入图片描述

确定后之后点击 Next。

1.2、填写对应项目信息

在这里插入图片描述

填完之后点击 Next。

1.3、确定项目存储位置

在这里插入图片描述

确定完之后点击 Finish,之后工具会打开解析项目,要等一会儿。

1.4、修改项目打包方式

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

    <groupId>cn.wolfcode</groupId>
    <artifactId>maven-web</artifactId>
    <version>1.0.0</version>
    <!-- 修改项目打包方式 -->
    <packaging>war</packaging>
</project>

2、添加 web.xml

自己手动在项目的 main 目录下建 webapp/WEB-INF/web.xml 文件,拷贝如下内容:

<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xmlns="http://java.sun.com/xml/ns/javaee"
	xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
	version="3.0">
</web-app>

3、修改项目编译运行版本

在 pom.xml 配置如下:

<properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <maven.compiler.source>11</maven.compiler.source>
    <maven.compiler.target>11</maven.compiler.target>
</properties>

4、添加依赖

在 pom.xml 文件添加如下依赖:

<dependencies>
    <!-- 配置 servlet-api 依赖 -->
    <dependency>
        <groupId>javax.servlet</groupId>
        <artifactId>javax.servlet-api</artifactId>
        <version>3.0.1</version>
        <!-- 记得一定配置 -->
        <scope>provided</scope>
    </dependency>
</dependencies>

5、编写 Servlet 与 JSP

@WebServlet("/hello")
public class HelloServlet extends HttpServlet {
    @Override
    protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        req.setAttribute("msg", "你好 Maven");
        req.getRequestDispatcher("/WEB-INF/a.jsp").forward(req, resp);
    }
}
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Maven</title>
</head>
<body>
    ${msg}
</body>
</html>

6、配置 Tomcat 插件

在 pom.xml 添加如下插件:

<build>
    <plugins>
        <plugin>
            <groupId>org.apache.tomcat.maven</groupId>
            <artifactId>tomcat7-maven-plugin</artifactId>
            <version>2.1</version>
            <configuration>
                <port>80</port> <!-- 端口 -->
                <path>/</path> <!-- 上下路径 -->
                <uriEncoding>UTF-8</uriEncoding> <!-- 针对 GET 方式乱码处理 -->
            </configuration>
        </plugin>
    </plugins>
</build>

7、启动项目

在这里插入图片描述

八、概念解释(了解)

1、坐标

1.1、数学中的坐标

在空间中,使用 X、Y、Z 三个向量可以唯一的定位空间中的任意一个点。

1.2、Maven 中的坐标

标识项目或者依赖在仓库中的位置。主要由下面构成:

  • groupId:项目名称,一般使用公司或组织域名倒写,域名具有唯一性,区分不同公司;
  • artifactId:项目中 Maven 项目/模块名称,区分同一个公司的项目;
  • version:项目版本,区分同一个项目不同时期的特点。

2、依赖

配置项目所要依赖的 jar,在 pom.xml 使用 dependency 元素配置,通过坐标先从本地仓库找,若没有再从远程仓库找。

2.1、scope

Maven 在编译,测试,运行的时候,各需要一套 classpath(比如编译的时候会有编译的 classpath,测试的时候会有测试的 classpath)。scope 表明该依赖的项目和三个 classpath 的关系,即表示依赖什么阶段起作用,什么阶段不起作用。

scope 主要可选值:

  • compile:默认,适用于所有阶段,会随着项目一起发布,在编译,测试,运行时都有效;
  • provided:编译和测试阶段使用;典型的如 servlet-api.jar,打包时不需要,容器来提供;
  • runtime:测试和运行阶段使用,用于接口和实现分离,典型的如 jdbc 具体驱动实现;
  • test:测试阶段使用,不会随项目发布,如 junit。

在这里插入图片描述

2.2、传递性

Maven 的依赖是具有传递性的,比如 A -> B,B -> C,那么 A 间接的依赖于 C,这就是依赖的传递性,其中 A 对于 B 是第一直接依赖,B 对于 C 是第二直接依赖,C 为 A 的传递性依赖。依赖的传递性可以解决依赖繁琐的问题。

更多推荐

Java实现添加文字水印、图片水印功能实战

Java实现添加文字水印、图片水印功能实战本文介绍java实现在图片上加文字水印的方法,水印可以是图片或者文字,操作方便。java实现给图片添加水印实现步骤:获取原图片对象信息(本地图片或网络图片)添加水印(设置水印颜色、字体、坐标等)处理输出目标图片1.java实现给图片添加文字水印1.1获取原图片对象信息第一步:获

不过是一棵红黑树(附源码)

前言红黑树,可谓是名号响当当的一种数据结构了。在数据结构学习的初期我们了解到了搜索二叉树,并且知道搜索二叉树的效率是非常之高的,在理想情况下10亿个数据中找一个值它也只需要30次左右,但是它尽管如此厉害可是也有不足的地方,在一些极端情况下,搜索二叉树可能会被退化成一棵单链表,那么此时它的效率就会大打折扣的变成O(n)。

IOTE 2023国际物联网展直击:芯与物发布全新定位芯片,助力多领域智能化发展

IOTE2023国际物联网展,作为全球物联网领域的盛会,于9月20日在中国深圳拉开帷幕。北斗星通集团应邀参展,旗下专业从事物联网、消费类GNSS芯片研发设计的芯与物公司也随其亮相本届盛会。展会上,芯与物展示了一系列创新的GNSS定位芯片产品,引领了国内定位技术的发展潮流。其市场总监黄秋菊女士揭幕了公司最新的产品CC11

vue-cli创建项目、vue项目目录结(运行vue项目)、es6导入导出语法、vue项目编写规范

vue-cli创建项目、编写vue项目、1vue-cli创建项目1.1vue-cli命令行创建项目1.2使用vue-cli-ui创建2vue项目目录结构2.1运行vue项目2.2vue项目的目录结构3es6导入导出语法4vue项目编写规范4.1修改项目4.2以后写vue项目,只需要在固定位置写固定代码即可1vue-cl

【K8S系列】深入解析k8s网络插件—Calico

序言做一件事并不难,难的是在于坚持。坚持一下也不难,难的是坚持到底。文章标记颜色说明:黄色:重要标题红色:用来标记结论绿色:用来标记论点蓝色:用来标记论点Kubernetes(k8s)是一个容器编排平台,允许在容器中运行应用程序和服务。今天学习一下k8s网络插件-Calico相关知识希望这篇文章能让你不仅有一定的收获,

软件测试常问面试题

1、讲一下你最熟悉的模块是怎么测试的?2、fiddler如何抓https请求?步骤:设置浏览器http代理安装证书导入证书,端口号8888手机端获取fiddler的地址,配置无线局域网代理,安装手机证书。3、jmeter如何参数化(1)用户定义的变量添加一个线程组----添加一个配置元件—用户定义的变量。填写好变量名如

【网络技术】TCP详解

1TCP是什么TCP是TransmissionControlProtocol的缩写,即传输控制协议。TCP是一种面向连接的、可靠的、基于字节流的传输协议,是互联网通信协议TCP/IP中的一个重要组成部分。2三次握手三次握手的过程可以用以下图示表示:2.1详细介绍TCP协议使用三次握手(Three-wayhandshak

使用VScode SSH公网远程连接本地服务器开发【无公网IP内网穿透】

文章目录前言1、安装OpenSSH2、vscode配置ssh3.局域网测试连接远程服务器4.公网远程连接4.1ubuntu安装cpolar内网穿透4.2创建隧道映射4.3测试公网远程连接5.配置固定TCP端口地址5.1保留一个固定TCP端口地址5.2配置固定TCP端口地址5.3测试固定公网地址远程前言远程连接服务器工具

Vue3-初识Vue3、创建Vue3工程、vue3组合式API(setup、ref函数、reactive函数)、响应式原理、计算属性、监视属性

Vue3(1)目录Vue3(1)一、Vue3简介二、创建Vue3.0工程1、使用vue-cli创建2、使用vite创建三、常用的CompositionAPI(组合式API)1、拉开序幕的setup2、ref函数3、reactive函数4、Vue3中响应式原理(1)Vue2中响应式原理(2)Vue3中的Proxy(3)V

【C++STL基础入门】list改、查操作

文章目录前言一、list查操作1.1迭代器循环1.2for_each函数二、list改操作2.1迭代器修改2.2assign函数2.3=运算符总结前言C++标准模板库(STL)是C++语言中非常重要的部分,它提供了一组通用的模板类和函数,用于处理常见的数据结构和算法问题。其中之一是list(链表),它是一种双向链表容器

TOWE一转二家用无线遥控插座,让生活变得简单

随着科技的进步,人们的生活方式正在发生改变,越来越多的智能家居产品进入我们的生活中,为我们的生活带来了极大的便利。无线遥控插座作为一种集成了无线遥控技术与插座功能的创新产品,在家庭、办公、商业场景有着广泛的应用。同为科技(TOWE)一转二家用无线遥控插座是TOWE专为万物互联时代潮流趋势下开发的场景应用产品,为用户各类

热文推荐