Java研学-Maven基础

一 概述

  Maven是一个跨平台的项目管理工具,主要用于基于 Java 平台的项目(Maven 底层为Java)构建、依赖包管理和项目信息管理,只需要运行一条简单的命令,就能高效的完成构建动作
  Maven 能提供一种项目的依赖配置,配置好的项目,Maven 能自动的从 Maven 的中央仓库中下载并管理项目依赖的 jar 包,并且还能自动的管理这些 jar 包依赖的其他 jar 包,同时提供了一种标准的项目目录结构(约定大于配置)

二 安装

1 查看JDK版本

  Maven 版本对 JDK 有要求

// 命令行输入,查询安装 JDK 是否正确并查询安装的版本
java  -version// 没有配置的话,则进行jdk配置
1.添加 JAVA_HOME,需要指向 JDK 安装目录;
2.添加 PATH,添加 %JAVA_HOME%\bin。

2 安装 Maven

  于官网下载对应的压缩包,将apache-maven-x.x.x-bin.zip 解压到目录中,目录路径不要有空格和中文。

3 配置环境变量

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

4 验证 Maven

// 命令行窗口执行,查看版本信息
mvn –v

三 常用命令

mvn compile:编译,在项目下生成一个target目录,里面是编译后的.class文件
mvn clean:清除,将编译后的target目录删除
mvn test:测试,会在项目下生成源码编译后的文件以及测试文件编译后的文件
mvn package:打包,执行项目的编译测试命令,并且将项目打包成jar 或war
mvn install:打包,本地仓库也放一份.执行项目的编译 测试  打包操作。

四 Maven 设置

1 本地仓库

  运行 Maven 命令会在用户目录生成一个 .m2 目录,该目录下有个目录名 repository,也就是本地仓库,用于存放一些下载的 jar 文件。本地仓库默认位置在用户目录/.m2/repository(不建议放在系统盘)
  ① 将 Maven 根目录的 conf/settings.xml 拷贝到 .m2 中,作为个人 Maven 配置文件;
  ② 在 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>aliyunId</id><mirrorOf>central</mirrorOf><name>aliyun maven</name><url>https://maven.aliyun.com/repository/central</url></mirror></mirrors>
</settings>

五 IDEA 中 Maven 的配置

  于settings中进行配置
配置

六 基于Maven的JavaSE项目

1 创建项目

描述

2 项目信息

描述

3 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.tj</groupId><artifactId>play_maven</artifactId><version>1.0-SNAPSHOT</version><properties><maven.compiler.source>8</maven.compiler.source><maven.compiler.target>8</maven.compiler.target></properties>
</project>

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.tj</groupId><artifactId>play_maven</artifactId><version>1.0-SNAPSHOT</version><!--添加依赖信息名称版本作用域--><dependencies><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>8.0.23</version><scope>runtime</scope></dependency></dependencies><properties><maven.compiler.source>8</maven.compiler.source><maven.compiler.target>8</maven.compiler.target></properties>
</project>

  Maven刷新,显示依赖信息,表示添加成功
依赖添加成功

5 添加依赖(网站拷贝)

  于网站搜索栏中查询所需依赖,确认版本,拷贝配置到pom中
在这里插入图片描述

6 Maven命令

调插件既可

七 基于Maven的JavaWeb项目

1 创建项目

 同上

2 修改项目打包方式

<?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.tj</groupId><artifactId>play_maven</artifactId><version>1.0-SNAPSHOT</version><!--修改打包方式--><packaging>war</packaging><properties><maven.compiler.source>8</maven.compiler.source><maven.compiler.target>8</maven.compiler.target></properties>
</project>

3 添加 web.xml

  于项目的 main 目录下创建 webapp/WEB-INF/web.xml 文件

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"version="4.0">
</web-app>

4 修改项目编译运行版本

<?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.tj</groupId><artifactId>play_maven</artifactId><version>1.0-SNAPSHOT</version><!--修改打包方式--><packaging>war</packaging><properties><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><maven.compiler.source>16</maven.compiler.source><maven.compiler.target>16</maven.compiler.target></properties>
</project>

5 添加依赖

    <!--添加依赖信息名称版本作用域--><dependencies><!-- 配置 servlet-api 依赖 --><dependency><groupId>javax.servlet</groupId><artifactId>javax.servlet-api</artifactId><version>4.0.1</version><scope>provided</scope></dependency></dependencies>

6 编写 Servlet 与 JSP

Hi.java

@WebServlet("/Hi")
public class Hi extends HttpServlet {@Overrideprotected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {req.setAttribute("msg", "Play Maven");req.getRequestDispatcher("/WEB-INF/hi.jsp").forward(req, resp);}
}

hi.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head><title>Maven</title>
</head>
<body>
${msg}
</body>
</html>

7 配置 Tomcat 插件

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

8 Tomcat 启动

在这里插入图片描述

八 细节

1 坐标

  标识项目或者依赖在仓库中的位置

groupId:项目名称,一般为公司或组织域名倒写
artifactId:项目中 Maven 项目/模块名称,区分不同的项目
version:项目版本,区分同一个项目的不同时期

2 依赖

  配置项目所要依赖的 jar,于 pom.xml 中 dependency 元素配置,通过坐标先从本地仓库找,没有再从远程仓库找。
① scope
  Maven 在编译,测试,运行时,各有一套 classpath。scope 表明该依赖的项目和三个 classpath 的关系,即表示依赖什么阶段起作用,什么阶段不起作用。
在这里插入图片描述
  scope 主要可选值:
  compile:默认,适用于所有阶段,随着项目一起发布,编译,测试,运行时都有效
  provided:编译和测试时使用;如 servlet-api.jar lombok,不需打包,容器会提供
  runtime:测试和运行时使用,用于接口和实现分离,如 jdbc 具体驱动实现 mysql 驱动
  test:测试时使用,不会随项目发布,如 junit
② 传递性
  Maven 依赖具有传递性,如 A -> B,B -> C, A 间接依赖于 C,其中 A 对于 B 是第一直接依赖,B 对于 C 是第二直接依赖,C 为 A 的传递性依赖,由此解决依赖繁琐的问题。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/414078.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

docker里Java服务执行ping命令模拟流式输出

文章目录 业务场景处理解决实现ping功能并实时返回输出实现长ping和中断请求docker容器找不到ping命令处理 业务场景 我们某市的客户&#xff0c;一直使用CS版本的信控平台&#xff0c;直接安装客户Windows server服务器上&#xff0c;主要对信号机设备进行在线管理、方案配时…

09 STM32 - PWM

9.1 PWM简介 脉冲宽度调制(Pulse Width Modulation,简称PWM)&#xff0c;是利用微处理器的数字输出来对模拟电路进行控制的一种非常有效的技术。简单一点&#xff0c;就是对脉冲宽度的控制。 9.2 PWM波原理 如下图所示&#xff0c;使用定时器定时&#xff0c;从0开始&#x…

VSCode使用Makefile Tools插件开发C/C++程序

提起Makefile&#xff0c;可能有人会觉得它已经过时了&#xff0c;毕竟现在有比它更好的工具&#xff0c;比如CMake&#xff0c;XMake&#xff0c;Meson等等&#xff0c;但是在Linux下很多C/C源码都是直接或者间接使用Makefile文件来编译项目的&#xff0c;可以说Makefile是基石…

SQL 最大连续合格次数 最大连胜记录次数 最大连败记录次数

有这样一个问题&#xff0c;工厂中要统计某个供应商送货检验的情况&#xff0c;依照其连续合格次数&#xff0c;决定是否免检&#xff0c;不使用游标或者循环&#xff0c;如何写这个sql。 此情景也可以用于统计连胜记录等 先要学习一下 窗函数LAG&#xff0c;指的是按分组和排…

统计学-R语言-6.1

文章目录 前言参数估计的原理总体、样本和统计量点估计区间估计评价估计量的标准有效性 总体均值的区间估计一个总体均值的估计&#xff08;大样本&#xff09;一个总体均值的估计&#xff08;小样本估计&#xff09; 练习 前言 本篇文章将开始介绍参数估计的相关知识。 参数估…

[笔记]深度学习入门 基于Python的理论与实现(四)

4. 神经网络的学习 这里说的‘学习’就是指从训练数据中自动获取最优权重参数的过程。为了进行学习&#xff0c;将导入损失函数这一指标。而学习的目的就是以该损失函数为基准&#xff0c;找出能使它的值达到最小的权重参数。为此&#xff0c;我们介绍利用了函数斜率的梯度法。…

O(1)插入、删除和随机元素[中等]

优质博文&#xff1a;IT-BLOG-CN 一、题目 实现RandomizedSet类&#xff1a; 【1】RandomizedSet()初始化RandomizedSet对象。 【2】bool insert(int val)当元素val不存在时&#xff0c;向集合中插入该项&#xff0c;并返回true&#xff1b;否则&#xff0c;返回false。 【3】…

【算法与数据结构】343、LeetCode整数拆分

文章目录 一、题目二、解法三、完整代码 所有的LeetCode题解索引&#xff0c;可以看这篇文章——【算法和数据结构】LeetCode题解。 一、题目 二、解法 思路分析&#xff1a;博主做这道题的时候一直在思考&#xff0c;如何找到 k k k个正整数&#xff0c; k k k究竟为多少合适。…

2018年认证杯SPSSPRO杯数学建模B题(第二阶段)动态模糊图像全过程文档及程序

2018年认证杯SPSSPRO杯数学建模 动态模糊图像复原 B题 动态模糊图像 原题再现&#xff1a; 人眼由于存在视觉暂留效应&#xff0c;所以看运动的物体时&#xff0c;看到的每一帧画面都包含了一段时间内 (大约 1/24 秒) 的运动过程&#xff0c;所以这帧画面事实上是模糊的。对…

C#:接口中如何将某个值类型的字段传null?

在实际对接第三方接口时&#xff0c;偶尔会有一些字段在某些情况下是不需要传值的。那如何处理呢&#xff1f; 有两种方法&#xff1a; 1、将值类型改为可空类型&#xff1b; 2、定义基类&#xff0c;基类包含所有必须要传的字段&#xff0c;子类则加入偶尔需要传的字段。 下…

玖章算术NineData通过阿里云PolarDB产品生态集成认证

近日&#xff0c;玖章算术旗下NineData 云原生智能数据管理平台 (V1.0&#xff09;正式通过了阿里云PolarDB PostgreSQL版 (V11)产品集成认证测试&#xff0c;并获得阿里云颁发的产品生态集成认证。 测试结果表明&#xff0c;玖章算术旗下NineData数据管理平台 (V1.0&#xff…

基于高斯过程的贝叶斯优化

基于Bayes_opt实现GP优化 bayes-optimization是最早开源的贝叶斯优化库之一&#xff0c;也是为数不多至今依然保留着高斯过程优化的优化库。由于开源较早、代码简单&#xff0c;bayes-opt常常出现在论文、竞赛kernels或网络学习材料当中&#xff0c;因此理解Bayes_opt的代码是…