maven从入门到精通 第一章 Maven核心程序解压与配置

news2024/11/15 13:38:39

这里写自定义目录标题

  • 一 为什么要使用Maven
    • 1 依赖管理 帮助管jar包
    • 2 构建管理 脱离IDE进行运行
      • 2.1 传统方式,就是打包成war包,然后放在tomacat上运行
      • 2.2 一个程序的运行步骤
  • 二 maven的工作机制
    • 1 配置maven
      • 1.1 关注 Maven 的核心配置文件:conf/settings.xml
      • 1.2 配置环境变量
    • 2 maven中的坐标概念
      • 2.1 三个坐标,在jar库中可以定位到**唯一的jar包**
      • 2.2 根据坐标到本地仓库中寻找到对应的jar包
      • 2.3 修改默认maven配置
  • 三 Maven核心概念
    • 1 POM(Project Object Model)
    • 2 约定的目录结构

一 为什么要使用Maven

jar包很难找全,jar包的版本可能不修改项目需求,百度的会有问题,不能使用,使用Maven可以自动下载jar包,实际的框架内部存在错综复杂的依赖关系
在这里插入图片描述

1 依赖管理 帮助管jar包

随着SpringBoot等框架的高集成的框架引入,一个项目往往需要上百个jar包
而如果用Maven来管理,只需要依据功能,配置个位数依赖
在这里插入图片描述

   <!-- Nacos 服务注册发现启动器 -->
    <dependency>
        <groupId>com.alibaba.cloud</groupId>
        <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
    </dependency>

    <!-- web启动器依赖 -->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>

    <!-- 视图模板技术 thymeleaf -->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-thymeleaf</artifactId>
    </dependency>

2 构建管理 脱离IDE进行运行

2.1 传统方式,就是打包成war包,然后放在tomacat上运行

修改这个tomcat为本地的tomcat版本
在这里插入图片描述
点击add
在这里插入图片描述
添加成功后运行

2.2 一个程序的运行步骤

在这里插入图片描述
运行后,k8s动态分负载
自动化部署

二 maven的工作机制

在这里插入图片描述

1 配置maven

1.1 关注 Maven 的核心配置文件:conf/settings.xml

改本地仓库位置,创建一个本地文件夹

 <!-- 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>D:\maven-repository</localRepository>

配置阿里云镜像仓库,注释掉原来的位置

  <mirror>
    <id>nexus-aliyun</id>
    <mirrorOf>central</mirrorOf>
    <name>Nexus aliyun</name>
    <url>http://maven.aliyun.com/nexus/content/groups/public</url>
  </mirror>

在profiles里面装jdk版本

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

1.2 配置环境变量

检测JDK版本:

C:\Users\20120>java -version
java version "1.8.0_152"
Java(TM) SE Runtime Environment (build 1.8.0_152-b16)
Java HotSpot(TM) 64-Bit Server VM (build 25.152-b16, mixed mode)

检测JAVA_HOME的位置

C:\Users\20120>echo %JAVA_HOME%
C:\Program Files\Java\jdk1.8.0_152

配置MAVEN_HOME
HOME一般是bin目录的上一级
PATH指向的都是bin目录

在这里插入图片描述
path里面添加

%MAVEN_HOME%\bin

配完看版本

C:\Users\20120>mvn -v
Apache Maven 3.9.1 (2e178502fcdbffc201671fb2537d0cb4b4cc58f8)
Maven home: D:\Java\apache-maven-3.9.1
Java version: 1.8.0_152, vendor: Oracle Corporation, runtime: C:\Program Files\Java\jdk1.8.0_152\jre
Default locale: zh_CN, platform encoding: GBK
OS name: "windows 10", version: "10.0", arch: "amd64", family: "windows"

2 maven中的坐标概念

2.1 三个坐标,在jar库中可以定位到唯一的jar包

在这里插入图片描述
公司+项目:一个具体要实现的程序,比方说滴滴,或者QQ
比如说com.msb.maven
工程:其中的功能模块,比方说,前端,后端
版本号:QQ一直会有迭代版本

2.2 根据坐标到本地仓库中寻找到对应的jar包

生成maven工程
mvn是主命令,后面是子命令
archetype:调用的一个插件
generate:目标

mvn archetype:generate

在这里插入图片描述
直接回车

Define value for property 'groupId': com.xyt.maven
Define value for property 'artifactId': pro01-maven-java
Define value for property 'version' 1.0-SNAPSHOT: :
Define value for property 'package' com.xyt.maven: :
Confirm properties configuration:
groupId: com.xyt.maven
artifactId: pro01-maven-java
version: 1.0-SNAPSHOT
package: com.xyt.maven
 Y: :

构建成功

[INFO] ----------------------------------------------------------------------------
[INFO] Using following parameters for creating project from Old (1.x) Archetype: maven-archetype-quickstart:1.1
[INFO] ----------------------------------------------------------------------------
[INFO] Parameter: basedir, Value: D:\maven_workspace\spaceVideo
[INFO] Parameter: package, Value: com.xyt.maven
[INFO] Parameter: groupId, Value: com.xyt.maven
[INFO] Parameter: artifactId, Value: pro01-maven-java
[INFO] Parameter: packageName, Value: com.xyt.maven
[INFO] Parameter: version, Value: 1.0-SNAPSHOT
[INFO] project created from Old (1.x) Archetype in dir: D:\maven_workspace\spaceVideo\pro01-maven-java
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time:  15:10 min
[INFO] Finished at: 2023-05-04T12:06:21+08:00
[INFO] ------------------------------------------------------------------------

验证:在这里插入图片描述

2.3 修改默认maven配置

POM文件修改

<!--跟标签,对当前工程进行配置管理-->
<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>
  <!--从maven2就开始固定为4.0.0.0
  表示当前xml所采用的标签结构
  -->
  <!--groupID 代表公司或组织开发的某个项目-->
  <groupId>com.xyt.maven</groupId>
  <!--代表项目的一个模块-->
  <artifactId>pro01-maven-java</artifactId>
  <!--
    模块的版本号
  -->
  <version>1.0-SNAPSHOT</version>
  <!--
    打包成一个jar包
  -->
  <packaging>jar</packaging>
  <!--取值pom,说明这个工程用于管理其他工程-->

  <name>pro01-maven-java</name>
  <url>http://maven.apache.org</url>
  <!--propertise进行属性值的定义-->

  <properties>
  <!--
    在构建过程中读取源码时候用的字符集
  -->
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
  </properties>

  <dependencies>
  <!--配置一类,很多个具体依赖信息-->

    <dependency>
    <!--dependency 单个依赖信息,一个具体的依赖信息-->
    <!--gav,三标签
       scope 依赖的范围
    -->
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>4.12</version>
      <scope>test</scope>
    </dependency>
  </dependencies>
</project>

三 Maven核心概念

1 POM(Project Object Model)

项目对象模型,类似于DOM操作是js的核心,POM是MAVEN的核心
模型化思想,把地球想象成一个地球仪去分析
学maven,就是学怎么配置POM文件

2 约定的目录结构

maven固定生成的一个目录结构,是所有POM的祖宗,超级POM配置的,程序运行里面的,就是单一的POM
在这里插入图片描述
约定的意义就是实现项目搭建的统一与自动化,形成一个固定流程
开发领域技术发展的趋势是,约定大于配置,配置大于编码

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

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

相关文章

Android Glide加载图片、网络监听、设置资源监听

再搞事情之前首先创建一个项目&#xff0c;就命名为GlideDemo吧。    一、项目配置 创建好之后&#xff0c;在app模块下build.gradle的dependencies闭包中添加如下依赖&#xff1a; //glide//glideimplementation com.github.bumptech.glide:glide:4.11.0annotationProcess…

mysql的一次死锁记录

表结构 create table lzy_test.test_lzy (id int not null primary key,name varchar(128) default null,age int default 0 null,constraint key_name unique (name) );表中数据 idnameage1lzy104lzy412336lzy609lzy90 事务死锁的过程 隔离级别RC 事务A…

【沐风老师】3dMax创建缝线插件StitchLines使用方法详解

3dMax创建缝线插件使用方法详解 3dMax创建缝线插件StitchLines&#xff0c;一键生成车缝线建模&#xff0c;该脚本与可编辑多边形、可编辑样条线或 编辑多边形修改器一起使用&#xff0c;创建一条样条曲线&#xff08;车缝线&#xff09;&#xff0c;它将以几何体形式在视口中和…

云时通OMS:为零售品牌商打造高效的全渠道订单管理!

传统的零售企业围绕“人、货、场” 三要素来展开营销&#xff0c;其目标是基于“场”将货销售给更多的人。随着数字技术的应用&#xff0c;新零售模式下的“场”除了传统的线下店铺外&#xff0c;还拓展了多元化的线上渠道&#xff0c;比如小程序、企业APP、第三方平台、电商直…

学系统集成项目管理工程师(中项)系列17a_范围管理(上)

1. 包括确保项目做且只做所需的全部工作&#xff0c;以成功完成项目的各个过程 2. 项目工作明确划定边界 2.1. 什么是包括在项目之内的 2.2. 什么是不包括在项目之内的 3. 项目其他各方面管理的基础 4. 编制范围管理计划过程 4.1. 对如何定义、确认和控制项目范围的过程进…

归一化处理(2023寒假每日一题 14)

在机器学习中&#xff0c;对数据进行归一化处理是一种常用的技术。 将数据从各种各样分布调整为平均值为 0 0 0、方差为 1 1 1 的标准分布&#xff0c;在很多情况下都可以有效地加速模型的训练。 这里假定需要处理的数据为 n n n 个整数 a 1 , a 2 , ⋯ , a n a_1,a_2,⋯…

零入门kubernetes网络实战-30->基于bridge+veth pair+DNAT技术来实现外网可以访问内网的方案

《零入门kubernetes网络实战》视频专栏地址 https://www.ixigua.com/7193641905282875942 本篇文章视频地址(稍后上传) 通过DNAT技术可以将brige虚拟网桥管理的内网中的服务暴露出来&#xff0c;以供外网访问。 1、测试环境介绍 两台centos虚拟机 # 查看操作系统版本 cat /…

Typora 文字快捷修改颜色

Typora 设置字体上色快捷键 1. 安装AutoHotKey AutoHotkey 是一种 免费 和 开源 的微软Windows自定义脚本语言&#xff0c;最初旨在 提供简单的键盘快捷键或热键 &#xff0c; 快速创建宏和软件自动化 。 基于成熟的做法&#xff0c;本脚本也采用 AutoHotKey 实现。 AutoHot…

精炼计算机网络——物理层(一)

文章目录 前言2.1物理层的基本概念2.2 数据通信的基础知识2.2.1 数据通信系统的模型2.2.3 信道的极限容量 2.3 物理层下面的传输媒体2.3.1 导引型传输媒体2.3.2 非导引型传输媒体 总结 前言 经历了两篇文章的学习&#xff0c;相信读者们一定对计算机网络有了一个基础的了解。接…

vue3+element-plus 通过v-infinite实现下拉滚动无限加载

v-infinite官网 v-infinite-scroll无限滚动组件使用详解 1、v-infinite-scroll"load" //load无限滚动加载的方法2、infinite-scroll-disabled //是否禁用无限滚动加载3、infinite-scroll-delay //节流时延&#xff0c;单位为ms4、infinite-scroll-distance //触发加载…

深入理解Java Class文件格式 constant_UTF_info

首先&#xff0c; 让我们回顾一下关于class文件格式的之前两篇博客的主要内容。 在 深入理解Java Class文件格式&#xff08;一&#xff09; 中&#xff0c; 讲解了class文件在整个java体系结构中的位置和作用&#xff0c; 讲解了class文件中的魔数和版本号相关的信息&#xff…

GitHub上“千金难求”的Spring Boot趣味实战全彩版手册,太干了

本书内容极其丰富&#xff0c;不仅涵盖了Spring MVC、MyBatis Plus、SpringData JPA、Spring Security、Quartz等主流框架&#xff0c;整合了MySQL、Druid、Redis、RabbitMQ、Elasticsearch等互联网常用技术与中间件&#xff0c;还涉及单元测试、异常处理、日志、Swagger等技术…

Vue——Vue2项目开发流程以及Element组件库的使用

Vue项目开发流程&#xff08;Vue2演示&#xff09; 在使用Vue提供的脚手架创建的项目文件里面&#xff0c;可以看见引入了三个组件 一个是Vue组件&#xff0c;有了这个下面才可以新建一个Vue实例 一个是App组件&#xff0c;下面将其使用一个render函数打包成了一个DOM元素放…

Redis分片集群和亿级访问量数据处理

一、redis分片集群 1.简介 业务场景&#xff0c;需要存储50G的数据。对于内存和硬盘配置不足&#xff0c;选用两种方式 一种&#xff1a;纵向扩展&#xff1a;加内存&#xff0c;加硬盘&#xff0c;提高CPU。简单、直接。RDB存储效率要考虑。成本要考虑。 二种&#xff1a;横…

016+limou+C语言常用的32个关键字

0.前言 本博文是在对C语言有一定深入了解后&#xff0c;对C语言最为主要的32个关键字进行了简要的概述和一些容易被忽略的细节研究&#xff0c;您可以当作学习或复习C语言基础使用&#xff08;毕竟关键字就是构成C语言语法的基石&#xff09;&#xff0c;也可以提出您所不认同…

java版企业电子招投标采购系统源码之首页设计

功能模块&#xff1a; 待办消息&#xff0c;招标公告&#xff0c;中标公告&#xff0c;信息发布 描述&#xff1a; 全过程数字化采购管理&#xff0c;打造从供应商管理到采购招投标、采购合同、采购执行的全过程数字化管理。通供应商门户具备内外协同的能力&#xff0c;为外部…

易岸教育:公务员两科目考试内容是什么?

&#xff08;一&#xff09;《行政能力测验》 《行政能力测验》分为常识判断、言语理解与表达、数量关系、推理判断、资料分析五大部分。 1、常识判断题共20道题&#xff0c;涵盖面广&#xff0c;内容丰富&#xff0c;可归纳为自然科学、社会科学、时事热点三大类。 2、语言…

风扇的气动性能简介

1 风扇的定义 & 分类 风扇是很常见的设备&#xff0c;应用于通风、设备散热等多种场景&#xff0c;典型如家用的电风扇、抽风机&#xff0c;各类电子设备的散热风扇等。 风扇是通过外力驱动叶片旋转引发气体运动的设备。根据AMCA Standard 210-16的规定&#xff0c;风扇对气…

一个滑模控制(SMC)实例及仿真

被控对象 考虑这么一个被控对象 J θ ( t ) u ( t ) d ( t ) J \ddot\theta(t) u(t) d(t) Jθ(t)u(t)d(t) 其中&#xff0c; J J J 为转动惯量&#xff0c; θ \theta θ 为角度&#xff0c; u u u 为控制量&#xff0c; d d d 为扰动&#xff0c;且 d ( t ) < D d(…

联想天逸510S-i5电脑如何重装windows系统

如果你的联想天逸510S-i5电脑出现了系统故障、病毒感染、运行缓慢等问题&#xff0c;你可能需要重装系统来解决。但是&#xff0c;联想天逸510S-i5电脑如何重装windows系统呢?本文将为你介绍两种方法&#xff1a;用U盘重装系统和用联想系统自带的重置功能。 ​ 联想天逸510S…