SSM【Spring SpringMVC Mybatis】——Maven

news2024/11/24 22:34:29

目录

1、为什么使用Maven

1️⃣获取jar包

2️⃣添加jar包

3️⃣使用Maven便于解决jar包冲突及依赖问题

2、什么是Maven

3、Maven基本使用

3.1 Maven准备

3.2 Maven基本配置

 3.3 Maven之Helloworld

4、Maven及Idea的相关应用

4.1 将Maven整合到IDEA中

 4.2 在IDEA中新建Maven工程

5、 Maven核心概念

5.1 Maven的POM

 5.2 Maven约定的目录结构

5.3 Maven生命周期

5.4 Maven插件和目标

5.5 Maven的仓库【重要】

5.6 Maven的坐标【重要】

 6、 Maven的依赖管理

6.1 依赖范围

6.2 依赖传递性

7、Maven的继承

7.1 为什么需要继承

7.2 Maven继承方式一

7.3 Maven继承方式二

8、Maven的聚合


1、为什么使用Maven

1️⃣获取jar包

  使用Maven之前,自行在网络中下载jar包,效率较低。如【谷歌、百度、CSDN....】

  使用Maven之后,统一在一个地址下载资源jar包【阿里云镜像服务器等...】

2️⃣添加jar包

  使用Maven之前,将jar复制到项目工程中,jar包添加到项目中,相对浪费存储空间

  使用Maven之后,jar包统一存储Maven本地仓库,使用坐标方式将jar包从仓库引入到项目中

3️⃣使用Maven便于解决jar包冲突及依赖问题

2、什么是Maven

Maven字面意:专家、内行

Maven是一款自动化构建工具,专注服务于Java平台的**项目构建**和**依赖管理**。

依赖管理:jar之间的依赖关系,jar包管理问题统称为依赖管理

项目构建:项目构建不等同于项目创建

  项目构建是一个过程【7步骤组成】,项目创建是瞬间完成的

    1. 清理:mvn clean

    2. 编译:mvn compile

    3. 测试:mvn test

    4. 报告:

    5. 打包:mvn package

    6. 安装:mvn install

    7. 部署:

3、Maven基本使用

3.1 Maven准备

下载地址:http://maven.apache.org/

-Maven底层使用Java语言编写的,所有需要配置JAVA_HOME环境变量及Path

- 将Maven解压非中文无空格目录下

配置MAVEN_HOME环境变量及Path

输入【cmd】,进入命令行窗口,输入【mvn   -v】 ,检查Maven环境是否搭建成功

3.2 Maven基本配置

Maven配置文件位置:maven根目录/conf/settings.xml

设置本地仓库【默认:C:/用户家目录/.m2/repository】

  <!-- localRepository

     | The path to the local repository maven will use to store artifacts.

     |

     | Default: ${user.home}/.m2/repository

    <localRepository>/path/to/local/repo</localRepository>

    -->

    <localRepository>E:\SG_220106\LocalRepository</localRepository>

设置阿里云镜像服务器

  <mirrors>

      <!-- mirror

       | Specifies a repository mirror site to use instead of a given repository. The repository that

       | this mirror serves has an ID that matches the mirrorOf element of this mirror. IDs are used

       | for inheritance and direct lookup purposes, and must be unique across the set of mirrors.

       |

      <mirror>

        <id>mirrorId</id>

        <mirrorOf>repositoryId</mirrorOf>

        <name>Human Readable Name for this Mirror.</name>

        <url>http://my.repository.com/repo/path</url>

      </mirror>

       -->

     <mirror>

          <id>nexus-aliyun</id>

          <mirrorOf>central</mirrorOf>

          <name>Nexus aliyun</name>

          <url>http://maven.aliyun.com/nexus/content/groups/public</url>

      </mirror>

    </mirrors>

  设置使用JDK版本【1.8|JDK8】

  <profiles>

  <profile>

        <id>jdk-1.8</id>

        <activation>

          <activeByDefault>true</activeByDefault>

          <jdk>1.8</jdk>

        </activation>

        <properties>

          <maven.compiler.source>1.8</maven.compiler.source>

          <maven.compiler.target>1.8</maven.compiler.target>

          <maven.compiler.compilerVersion>1.8</maven.compiler.compilerVersion>

        </properties>

      </profile>

    </profiles>

 3.3 Maven之Helloworld

> 约束>配置>代码

Maven工程目录结构约束

  项目名

    src【书写源代码】

      main【书写主程序代码】

         java【书写java源代码】

        resources【书写配置文件代码】

      test【书写测试代码】

        java【书写测试代码】

    pom.xml【书写Maven配置】

测试步骤

  进入项目名根目录【在根目标输入cmd即可】

  mvn clean

  mvn compile

   mvn test-compile

  mvn test

  mvn package

  mvn install

4、Maven及Idea的相关应用

4.1 将Maven整合到IDEA中

 4.2 在IDEA中新建Maven工程

 

5、 Maven核心概念

5.1 Maven的POM

POM全称:Project Object Model【项目对象模型】,将项目封装为对象模型,便于使用Maven管理【构建】项目

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">
      <!--    设置父工程坐标-->
      <parent>
          <artifactId>maven_demo</artifactId>
          <groupId>com.atguigu</groupId>
          <version>1.0-SNAPSHOT</version>
      </parent>
      <modelVersion>4.0.0</modelVersion>
  
      <artifactId>maven_helloworld</artifactId>
  
      <dependencies>
          <dependency>
              <groupId>junit</groupId>
              <artifactId>junit</artifactId>
              <version>4.12</version>
              <scope>test</scope>
          </dependency>
      </dependencies>
  </project>

 5.2 Maven约定的目录结构

  src【书写源代码】

      main【书写主程序代码】

         java【书写java源代码】

        resources【书写配置文件代码】

      test【书写测试代码】

        java【书写测试代码】

    pom.xml【书写Maven配置】

target【编译后目录结构】

5.3 Maven生命周期

Maven生命周期:按照顺序执行各个命令,Maven生命周期包含以下三个部分组成

  Clean LifeCycle:在进行真正的构建之前进行一些清理工作。

  Default LifeCycle:构建的核心部分,编译,测试,打包,安装,部署等等。

  Site LifeCycle:生成项目报告,站点,发布站点。

5.4 Maven插件和目标

插件:插件本质是由jar包和配置文件组成

目标:每个插件都能实现多个功能,每个功能就是一个插件目标。

5.5 Maven的仓库【重要】

仓库分类

  本地仓库:为当前计算机提供maven服务

  远程仓库:为其他计算机也可以提供maven服务

   私服:架设在当前局域网环境下,为当前局域网范围内的所有Maven工程服务。

   中央仓库:架设在Internet上,为全世界所有Maven工程服务。

   中央仓库的镜像:架设在各个大洲,为中央仓库分担流量。减轻中央仓库的压力,同时更快的响应用户请求。

仓库中的文件类型【jar包】

  Maven的插件

  第三方框架或工具的jar包

  自己研发的项目或模块

5.6 Maven的坐标【重要】

作用:使用坐标引入jar包

坐标由g-a-v组成

groupId:公司或组织的域名倒序+当前项目名称

artifactId:当前项目的模块名称

version:当前模块的版本

注意

 g-a-v:本地仓库jar包位置

 a-v:jar包全名

坐标应用

坐标参考网址:http://mvnrepository.com

 6、 Maven的依赖管理

6.1 依赖范围

依赖语法:\<scope>

  compile【默认值】:在main、test、Tomcat【服务器】下均有效。

  test:只能在test目录下有效

    junit

  provided:在main、test下均有效,Tomcat【服务器】无效。

    servlet-api

6.2 依赖传递性

路径最短者有先【就近原则】

先声明者优先

注意:Maven可以自动解决jar包之间的依赖问题

7、Maven的继承

7.1 为什么需要继承

如子工程大部分都共同使用jar包,可以提取父工程中,使用【继承原理】在子工程中使用

父工程打包方式,必须是pom方式

7.2 Maven继承方式一

在父工程中的pom.xml中导入jar包,在子工程中统一使用。【所有子工程强制引入父工程jar包】

示例代码

  <packaging>pom</packaging>

  <dependencies>

          <dependency>

              <groupId>junit</groupId>

              <artifactId>junit</artifactId>

              <version>4.12</version>

              <scope>test</scope>

          </dependency>

      </dependencies>

7.3 Maven继承方式二

在父工程中导入jar包【pom.xml】


  <packaging>pom</packaging>

  <dependencyManagement>

      <dependencies>

          <dependency>

              <groupId>junit</groupId>

              <artifactId>junit</artifactId>

              <version>4.12</version>

              <scope>test</scope>

          </dependency>

      </dependencies>

  </dependencyManagement>

  在子工程引入父工程的相关jar包

  <parent>

      <artifactId>maven_demo</artifactId>

      <groupId>com.atguigu</groupId>

      <version>1.0-SNAPSHOT</version>

      <relativePath>../pom.xml</relativePath>

  </parent>

   <dependencies>

          <dependency>

              <groupId>junit</groupId>

              <artifactId>junit</artifactId>

          </dependency>

  </dependencies>

注意:在子工程中,不能指定版本号

8、Maven的聚合

为什么使用Maven的聚合

  优势:只要将子工程聚合到父工程中,就可以实现效果:安装或清除父工程时,子工程会进行同步操作。

  注意:Maven会按照依赖顺序自动安装子工程


  <modules>

      <module>maven_helloworld</module>

      <module>HelloFriend</module>

      <module>MakeFriend</module>

  </modules>

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

使用脚本一键部署项目的示例(脚本会创建syetemctl的系统服务)

文章目录 说明使用脚本一键部署本项目开启/停止服务开启/关闭开机自动运行更新项目 参考地址&#xff1a;https://github.com/Evil0ctal/Douyin_TikTok_Download_API?tabreadme-ov-file 说明 后续相关项目可以使用这种方式创建脚本&#xff0c;脚本均放置在项目根目录下的bas…

【C++干货基地】揭秘C++STL库的魅力:stiring的初步了解和使用

&#x1f3ac; 鸽芷咕&#xff1a;个人主页 &#x1f525; 个人专栏: 《C干货基地》《粉丝福利》 ⛺️生活的理想&#xff0c;就是为了理想的生活! 引入 哈喽各位铁汁们好啊&#xff0c;我是博主鸽芷咕《C干货基地》是由我的襄阳家乡零食基地有感而发&#xff0c;不知道各位的…

AI大模型探索之路-训练篇17:大语言模型预训练-微调技术之QLoRA

系列篇章&#x1f4a5; AI大模型探索之路-训练篇1&#xff1a;大语言模型微调基础认知 AI大模型探索之路-训练篇2&#xff1a;大语言模型预训练基础认知 AI大模型探索之路-训练篇3&#xff1a;大语言模型全景解读 AI大模型探索之路-训练篇4&#xff1a;大语言模型训练数据集概…

动态规划——路径问题:LCR 166.珠宝的最高价值

文章目录 题目描述算法原理1.状态表示&#xff08;题目经验&#xff09;2.状态转移方程3.初始化4.填表顺序5.返回值 代码实现CJava 题目描述 题目链接&#xff1a;LCR 166.珠宝的最高价值 算法原理 1.状态表示&#xff08;题目经验&#xff09; 对于这种路径类的问题&…

Linux中动态库的用法及优缺点?怎样制作动态库和静态库?

一、什么是gcc gcc的全称是GNU Compiler Collection&#xff0c;它是一个能够编译多种语言的编译器。最开始gcc是作为C语言的编译器&#xff08;GNU C Compiler&#xff09;&#xff0c;现在除了c语言&#xff0c;还支持C、java、Pascal等语言。gcc支持多种硬件平台. 在 Linux…

在做题中学习(52): 山脉数组的峰顶索引

852. 山脉数组的峰顶索引 - 力扣&#xff08;LeetCode&#xff09; 解法&#xff1a;二分查找 思路&#xff1a;O(logn)的时间复杂度&#xff0c;很可能是二分法&#xff0c;再看看有没有二段性&#xff1a; 由题目可以知道&#xff0c;i的左边比i小&#xff0c;右边比i大&am…

47.Redis学习笔记

小林coding -> 图解redis的学习笔记 文章目录 Rediswindwos安装docker安装redis启动redis使用RDM访问虚拟机中的redispython连接redis缓存穿透、击穿、雪崩基本数据类型高级数据类型高并发指标布隆过滤器分布式锁Redis 的有序集合底层为什么要用跳表&#xff0c;而不用平衡…

Spring_概述

Spring 官网Spring Framework&#xff08;Spring&#xff09;文档位置重点内容Overview 官网 Spring官网 Spring Framework&#xff08;Spring&#xff09; 文档位置 重点 IoC容器AOP&#xff1a;面向切面编程AOT&#xff1a;ahead of time&#xff0c;提前编译Web 框架&…

面试分享——订单超30分钟未支付自动取消用什么实现?如何使用Redis实现延迟队列?

目录 1.订单超时未支付自动取消&#xff0c;这个你用什么方案实现&#xff1f; 2.如何使用Redis实现延迟队列 2.1实验步骤 2.2实现生产可用的延迟队列还需关注什么 3.总结 电商场景中的问题向来很受面试官的青睐&#xff0c;因为业务场景大家都相对更熟悉&#xff0c;相关…

金仓面对面 | 人大金仓×安硕信息共话金融信用风险管理数字化转型之道

金仓面对面 在数字化浪潮的推动下&#xff0c;人大金仓携手行业先锋&#xff0c;共同开启一场关于创新与转型的思想盛宴——金仓面对面。这不仅是一场对话&#xff0c;更是一次智慧的火花碰撞&#xff0c;一次行业数字化转型洞察的深度挖掘。 行业精英汇聚&#xff1a;我们荣幸…

SSH的魅力:为何它成为远程访问的首选

&#x1f407;明明跟你说过&#xff1a;个人主页 &#x1f3c5;个人专栏&#xff1a;《Linux &#xff1a;从菜鸟到飞鸟的逆袭》&#x1f3c5; &#x1f516;行路有良友&#xff0c;便是天堂&#x1f516; 目录 一、引言 1、SSH简介 2、SSH的历史与发展 3、SSH的主要用…

大学物理实验 期末复习笔记整理(个人复习笔记/侵删/有不足之处欢迎斧正)

一、误差和数据处理 1. 系统误差是指在重复性条件下&#xff0c;对同一被测量进行无限多次测量所得结果的平均值与被测量的真值之差。它通常是由于测量设备、测量方法或测量环境等因素引起的&#xff0c;具有重复性、单向性和可测性。而随机误差则是由于测量过程中一系列有关因…

CP AUTOSAR之CANXL Driver详细说明(正在更新中)

本文遵循autosar标准&#xff1a;R22-11 1 简介及功能概述 本规范描述了AUTOSAR 基础软件模块CAN XL 驱动程序的功能、API和配置。   本文档的基础是[1,CiA610-1]和[2,CiA611-1]。假设读者熟悉这些规范。本文档不会再次描述CAN XL 功能。   CAN XL 驱动程序是最低层的一部…

NETBIOS和DNS

Netbios NETBIOS只能工作在局域网。 NetBIOS&#xff08;Network Basic Input/Output System, 网络基本输入输出系统&#xff09;是一种接入服务网络的接口标准。主机系统通过WINS服务、广播及lmhosts文件多种模式&#xff0c;把NetBIOS名解析对应的IP地址&#xff0c;实现信…

MySQL中JOIN连接的实现算法

目录 嵌套循环算法&#xff08;NLJ&#xff09; 简单嵌套循环&#xff08;SNLJ&#xff09; 索引嵌套循环&#xff08;INLJ&#xff09; 块嵌套循环&#xff08;BNLJ&#xff09; 三种算法比较 哈希连接算法&#xff08;Hash Join&#xff09; 注意事项&#xff1a; 工…

Linux入门攻坚——22、通信安全基础知识及openssl、CA证书

Linux系统常用的加解密工具&#xff1a;OpenSSL&#xff0c;gpg&#xff08;是pgp的实现&#xff09; 加密算法和协议&#xff1a; 对称加密&#xff1a;加解密使用同一个秘钥&#xff1b; DES&#xff1a;Data Encryption Standard&#xff0c;数据加密标准&…

最后一块石头的重量 II ,目标和,一和0

最后一块石头的重量 II&#xff08;0-1背包问题 将石头尽可能分为两堆重量一样的&#xff0c;进行相撞则为0 class Solution {public int lastStoneWeightII(int[] stones) {int sum0;for(int x:stones){sumx;}int targetsum/2;int[] dpnew int[target1];//dp[j]表示最大石堆的…

kubeflow简单记录

kubeflow 13.7k star 1、Training Operator 包括PytorchJob和XGboostJob&#xff0c;支持部署pytorch的分布式训练 2、KFServing快捷的部署推理服务 3、Jupyter Notebook 基于Web的交互式工具 4、Katib做超参数优化 5、Pipeline 基于Argo Workflow提供机器学习流程的创建、编排…

上海亚商投顾:沪指窄幅震荡 两市成交额跌破万亿

上海亚商投顾前言&#xff1a;无惧大盘涨跌&#xff0c;解密龙虎榜资金&#xff0c;跟踪一线游资和机构资金动向&#xff0c;识别短期热点和强势个股。 一.市场情绪 沪指昨日缩量震荡&#xff0c;深成指、创业板指小幅调整&#xff0c;黄白二线分化明显。合成生物概念反复活跃…

网络安全之动态路由RIP详解

RIP&#xff1a;路由信息协议 RIP分为三个版本&#xff1a;RIPV1,RIPV2&#xff08;在IPv4中使用&#xff09;,RIPNG&#xff08;在IPv6中使用&#xff09; RIPV1是一种有类别的距离矢量型路由协议&#xff08;不传递网络掩码&#xff09;。 RIPV2是一种无类别的距离矢量型路…