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 {
    @Override
    protected 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 的传递性依赖,由此解决依赖繁琐的问题。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

精细微调技术在大型预训练模型优化中的应用

目录 前言1 Delta微调简介2 参数微调的有效性2.1 通用知识的激发2.2 高效的优化手段3 Delta微调的类别3.1 增量式微调3.2 指定式微调3.3 重参数化方法 4 统一不同微调方法4.1 整合多种微调方法4.2 动态调整微调策略4.3 超参数搜索和优化 结语 前言 随着大型预训练模型在自然语…

超优秀的三维模型优化平台(轻量化、格式转换、可视化等)

老子云概述 老子云3D可视化快速开发平台&#xff0c;集云压缩、云烘焙、云存储云展示于一体&#xff0c;使3D模型资源自动输出至移动端PC端、Web端&#xff0c;能在多设备、全平台进行展示和交互&#xff0c;是全球领先、自主可控的自动化3D云引擎。 平台架构 平台特性 基于 …

C#,人工智能,机器人,路径规划,A*(AStar Algorithm)算法、源代码及计算数据可视化

Peter Hart Nils Nilsson Bertram Raphael 参考&#xff1a; C#&#xff0c;人工智能&#xff08;AI&#xff09;机器人路径规划&#xff08;Path Planning&#xff09;的ARA*&#xff08;Anytime Replanning A* Algorithm&#xff09;算法与源程序https://blog.csdn.net/…

Apache Doris (六十四): Flink Doris Connector - (1)-源码编译

🏡 个人主页:IT贫道-CSDN博客 🚩 私聊博主:私聊博主加WX好友,获取更多资料哦~ 🔔 博主个人B栈地址:豹哥教你学编程的个人空间-豹哥教你学编程个人主页-哔哩哔哩视频 目录 1. Flink与Doris版本兼容

【大数据】Flink 详解(八):SQL 篇 Ⅰ

《Flink 详解》系列&#xff08;已完结&#xff09;&#xff0c;共包含以下 10 10 10 篇文章&#xff1a; 【大数据】Flink 详解&#xff08;一&#xff09;&#xff1a;基础篇【大数据】Flink 详解&#xff08;二&#xff09;&#xff1a;核心篇 Ⅰ【大数据】Flink 详解&…

基于Java+SSM+MYSQL的助农特色农产品销售系统详细设计和实现【附源码】

基于JavaSSM助农特色农产品销售系统详细设计和实现【附源码】 &#x1f345; 作者主页 央顺技术团队 &#x1f345; 欢迎点赞 &#x1f44d; 收藏 ⭐留言 &#x1f4dd; &#x1f345; 文末获取源码联系方式 &#x1f4dd; &#x1f345; 查看下方微信号获取联系方式 承接各种定…

笔试面试题——继承和多态

&#x1f4d8;北尘_&#xff1a;个人主页 &#x1f30e;个人专栏:《Linux操作系统》《经典算法试题 》《C》 《数据结构与算法》 ☀️走在路上&#xff0c;不忘来时的初心 文章目录 一、什么是多态&#xff1f;二、什么是重载、重写(覆盖)、重定义(隐藏)&#xff1f;三、 inli…

使用 Python 创造你自己的计算机游戏(游戏编程快速上手)第四版:第十九章到第二十一章

十九、碰撞检测 原文&#xff1a;inventwithpython.com/invent4thed/chapter19.html 译者&#xff1a;飞龙 协议&#xff1a;CC BY-NC-SA 4.0 碰撞检测涉及确定屏幕上的两个物体何时相互接触&#xff08;即发生碰撞&#xff09;。碰撞检测对于游戏非常有用。例如&#xff0c;如…

《动手学深度学习》学习笔记 第9章 现代循环神经网络

本系列为《动手学深度学习》学习笔记 书籍链接&#xff1a;动手学深度学习 笔记是从第四章开始&#xff0c;前面三章为基础知识&#xff0c;有需要的可以自己去看看 关于本系列笔记&#xff1a; 书里为了让读者更好的理解&#xff0c;有大篇幅的描述性的文字&#xff0c;内容很…

成功 BOM 流程的五个基本要素

您应该以确保 BOM 流程的方式实现和启用它们&#xff1a; 准确的 当前的 完全的 清除 可行的 追求准确性 为下游提供准确数据 制造商使用其 BOM 来通知下游操作他们需要执行什么。不言而喻&#xff0c;向其他团队和员工提供准确的信息至关重要&#xff1b;否则&…

transbigdata笔记:栅格参数优化

在transbigdata中&#xff0c;栅格参数有如下几个 params(lonStart,latStart,deltaLon,deltaLat,theta) 如何选择合适的栅格参数是很重要的事情&#xff0c;这会对最终的分析结果产生很大的影响。 怎么选择参数&#xff0c;和数据以及分析的目的息息相关&#xff0c;transbi…

25考研英语复习计划

Hello各位小伙伴大家好&#xff0c;今天要给大家分享的是英语备考计划&#xff0c;大家可以作为参考&#xff0c;制定适合自己的备考计划。 【英一/二】 英语分为英一、英二&#xff0c;一般学硕英一&#xff0c;专硕英二。 英一要比英二难度大。 【复习计划】 1-2月&#xf…

383. 观光(dp思想运用,Dijkstra)

383. 观光 - AcWing题库 “您的个人假期”旅行社组织了一次比荷卢经济联盟的巴士之旅。 比荷卢经济联盟有很多公交线路。 每天公共汽车都会从一座城市开往另一座城市。 沿途汽车可能会在一些城市&#xff08;零或更多&#xff09;停靠。 旅行社计划旅途从 S 城市出发&…

1.C语言基础知识

这里写目录标题 1.第一个C语言程序2.注释3.标识符4.关键字5.数据类型6.变量7.常量8.运算符9.输入输出输入输出 1.第一个C语言程序 C语言的编程框架 #include <stdio.h> int main() {/* 我的第一个 C 程序 */printf("Hello, World! \n");return 0; }2.注释 单行…

信管网2023年上半年信息系统项目管理师论文真题

链接 信息系统项目管理师真题题库 - 信管网 上午综合知识、下午案例分析和下午论文三部分 可以单个试题查看 可以在线考试 在线考试又分&#xff1a;考试模式、练习模式和机考模式

黑马程序员JavaWeb开发|案例:tlias智能学习辅助系统(6)解散部门

指路&#xff08;1&#xff09;&#xff08;2&#xff09;&#xff08;3&#xff09;&#xff08;4&#xff09;&#xff08;5&#xff09;&#x1f447; 黑马程序员JavaWeb开发|案例&#xff1a;tlias智能学习辅助系统&#xff08;1&#xff09;准备工作、部门管理_tlias智能…

【Qt】Qt配置

需要云服务器等云产品来学习Linux的同学可以移步/-->腾讯云<--/-->阿里云<--/-->华为云<--/官网&#xff0c;轻量型云服务器低至112元/年&#xff0c;新用户首次下单享超低折扣。 目录 一、Qt SDK下载 二、配置环境变量 三、新建工程(QWidget) 四、QWidg…

今年第一个互联网医疗IPO,健康之路靠医药零售“再上一层楼”?

提起互联网医疗&#xff0c;大家最先想到的或许是阿里健康、京东健康、丁香医生等“名号响亮”的公司。事实上&#xff0c;健康之路开辟互联网医疗之路的时间比这些巨头们更早。据悉&#xff0c;2001年&#xff0c;健康之路就将互联网和医院资源结合&#xff0c;是第一批开展线…

Halcon基于灰度值的模板匹配

Halcon基于灰度值的模板匹配 基于灰度值的模板匹配是最经典的模板匹配算法&#xff0c;也是最早提出来的模板匹配算法。这种算法的根本思想是&#xff0c;计算模板图像与检测图像之间的像素灰度差值的绝对值总和&#xff08;SAD方法&#xff09;或者平方差总和&#xff08;SSD…

【C语言基础考研向】04整型进制转换

整型常量的不同进制表示 计算机中只能存储二进制数&#xff0c;即0和1&#xff0c;(而在对应的物理硬件上则是高、低电平。为了更方便地观察内存中的二进制数情况&#xff0c;除我们正常使用的十进制数外&#xff0c;计算机还提供了十六进制数和八进制数。 下面介绍不同进制数的…