SSM【Spring SpringMVC Mybatis】——Maven

embedded/2024/9/24 7:04:25/

目录

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.ppmy.cn/embedded/37303.html

相关文章

Vue 过渡

点击按钮 控件背景颜色简单过渡变更。 <style> /* 过渡 */.transtion {transition: 3s background-color ease;}.blue {background-color: blue;}.green {background-color: green;}</style><body><div id"root"></div> </body>…

nginx模型设计和进程讲解

一. Nginx进程模型解析 1. master主进程 和 worker工作进程 [rootlocalhost sbin]# ps -ef|grep nginx root 15411 1 0 21:08 ? 00:00:00 nginx: master process ./nginx nobody 15412 15411 0 21:08 ? 00:00:00 nginx: worker process root…

IT项目管理【太原理工大学】前置知识点精简总结

根据上次考试以及其他方向考试的经验&#xff0c;这届考试可能偏向出题更灵活&#xff0c;能死记硬背或套公式的题减少&#xff0c;多做准备呀各位大三苦逼人&#xff0c;挂了补考还得回来补考凸^-^凸共勉 &#xff08;另外&#xff0c;别作弊&#xff0c;今天人工智能考试逮住…

element-plus el-time-picker 时间段选择(可多选)

实现一个如图的时间段选择器 处理好时间回显逻辑&#xff0c;组件内[‘’,‘’],后端数据[{startTime:‘’,endTime:‘’}]处理好加和减的显示逻辑 <template><div><div v-for"(item, index) in currentChoose" :key"index" class"fl…

算法打卡day40

今日任务&#xff1a; 1&#xff09;139.单词拆分 2&#xff09;多重背包理论基础&#xff08;卡码网56携带矿石资源&#xff09; 3&#xff09;背包问题总结 4&#xff09;复习day15 139单词拆分 题目链接&#xff1a;139. 单词拆分 - 力扣&#xff08;LeetCode&#xff09; …

[力扣题解]40. 组合总和 II

题目&#xff1a;40. 组合总和 II 思路 回溯法 &#xff08;回溯还是很难的&#xff0c;递归不好理解&#xff0c;看着代码很少吧。。。&#xff09; 代码 class Solution { public:vector<vector<int>> result;vector<int> path;void function(vector&l…

shell翻译官

shell脚本概述 shell的作用&#xff1a; 完成自动化运维工作&#xff0c;批量完成重复操作&#xff0c;结合crontab完成周期性任务 shell编程规范&#xff1a; Shell脚本的编写 vim XXX.sh 1.申明解释器 #!/bin/bash #!/bin/python 2.编写注释信息 要以 # 号开…

聪明与诚实:社会信任的桥梁

在现代社会中&#xff0c;我们经常听到这样的评价&#xff1a;“某人真聪明。”然而&#xff0c;当我们深入思考时&#xff0c;会发现“聪明”这个词背后所承载的含义并不单一。聪明和狡诈往往被混淆&#xff0c;而诚实的价值却时常被忽视。在一个高度诚信的社会里&#xff0c;…