javaweb-maven

news/2024/5/18 15:57:57

前端HTML,CSS,JS,Vue,Element,Nginx最后去复习,

Java开发工程师 主要学习方向是服务端

所以进入javaweb的服务端的第一个知识点

maven

什么是maven

用于管理和构建java项目的工具

maven的官方网站

Maven – Welcome to Apache Maven

maven来干什么

依赖管理:

  • 方便快捷管理项目依赖的jar包(资源)
  • 只需要在maven项目的pom.xml文件中配置即可实现

统一项目结构:

  • 提供标准、统一的项目结构

项目构建

  • maven提供了标准的、跨平台(Linux、Windows、MacOS) 的自动化项目构建方式

  • 代码需要进行编译、测试、打包、发布,这些操作如果需要反复进行就显得特别麻烦,而Maven提供了一套简单的命令来完成项目构建。

Maven仓库

Maven仓库分为:

  • 本地仓库:自己计算机上的一个目录(用来存储jar包)

  • 中央仓库:由Maven团队维护的全球唯一的。仓库地址:Central Repository:

  • 远程仓库(私服):一般由公司团队搭建的私有仓库

下载

下载地址:Maven – Download Apache Maven

 安装

Maven安装配置步骤:

  1. 解压安装

  2. 配置仓库

  3. 配置Maven环境变量

1、解压 apache-maven-3.6.1-bin.zip(解压即安装)

解压缩后的目录结构如下:

  • bin目录 : 存放的是可执行命令。(mvn 命令重点关注)

  • conf目录 :存放Maven的配置文件。(settings.xml配置文件后期需要修改)

  • lib目录 :存放Maven依赖的jar包。(Maven也是使用java开发的,所以它也依赖其他的jar包)

2、 配置本地仓库

在自己计算机上新一个目录(本地仓库,用来存储jar包)

进入到conf目录下修改settings.xml配置文件

1). 使用超级记事本软件,打开settings.xml文件,定位到53行

2). 复制<localRepository>标签,粘贴到注释的外面(55行)

3). 复制之前新建的用来存储jar包的路径,替换掉<localRepository>标签体内容

3、配置阿里云私服

由于中央仓库在国外,所以下载jar包速度可能比较慢,而阿里公司提供了一个远程仓库,里面基本也都有开源项目的jar包。

进入到conf目录下修改settings.xml配置文件:

1). 使用超级记事本软件,打开settings.xml文件,定位到160行左右

2). 在<mirrors>标签下为其添加子标签<mirror>,内容如下:

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

注意配置的位置,在<mirrors> ... </mirrors> 中间添加配置。

==注: 只可配置一个<mirror>(另一个要注释!) ,不然两个可能发生冲突,导致jar包无法下载!!!!!!!==

4、配置环境变量

Maven环境变量的配置类似于JDK环境变量配置一样

1). 在系统变量处新建一个变量MAVEN_HOME

  • MAVEN_HOME环境变量的值,设置为maven的解压安装目录

2). 在Path中进行配置

  • PATH环境变量的值,设置为:%MAVEN_HOME%\bin

打开cmd输入

mvn -v

 即安装成功

IDEA集成Maven

我们要想在IDEA中使用Maven进行项目构建,就需要在IDEA中集成Maven

配置Maven环境

全局设置

1、进入到IDEA欢迎页面

2、打开 All settings , 选择 Build,Execution,Deployment => Build Tools => Maven

Maven home path :指定当前Maven的安装目录

User settings file :指定当前Maven的settings.xml配置文件的存放路径

Local repository :指定Maven的本地仓库的路径 (如果指定了settings.xml, 这个目录会自动读取出来, 可以不用手动指定)

配置工程的编译版本为jdk版本(举例为11)

Maven项目

创建Maven项目

进入到IDEA欢迎页面,点击新建项目

 点击创建即可创建成功

在Maven工程下,创建测试Demo类

Maven项目的目录结构:

maven-project01

|--- src (源代码目录和测试代码目录)

        |--- main (源代码目录)

                |--- java (源代码java文件目录)

                |--- resources (源代码配置文件目录)

        |--- test (测试代码目录)

                |--- java (测试代码java目录)

                |--- resources (测试代码配置文件目录)

        |--- target (编译、打包生成文件存放目录)

POM配置详解

POM (Project Object Model) :指的是项目对象模型,用来描述当前的maven项目。

  • 使用pom.xml文件来实现

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"><!-- POM模型版本 --><modelVersion>4.0.0</modelVersion>
​<!-- 当前项目坐标 --><groupId>com.itheima</groupId><artifactId>maven_project1</artifactId><version>1.0-SNAPSHOT</version><!-- 打包方式 --><packaging>jar</packaging></project>

pom文件详解:

  • <project> :pom文件的根标签,表示当前maven项目

  • <modelVersion> :声明项目描述遵循哪一个POM模型版本

    • 虽然模型本身的版本很少改变,但它仍然是必不可少的。目前POM模型版本是4.0.0

  • 坐标 :<groupId>、<artifactId>、<version>

    • 定位项目在本地仓库中的位置,由以上三个标签组成一个坐标

  • <packaging> :maven项目的打包方式,通常设置为jar或war(默认值:jar)

Maven坐标详解

什么是坐标?

  • Maven中的坐标是==资源的唯一标识== , 通过该坐标可以唯一定位资源位置

  • 使用坐标来定义项目或引入项目中需要的依赖

Maven坐标主要组成

  • groupId:定义当前Maven项目隶属组织名称(通常是域名反写,例如:com.itheima)

  • artifactId:定义当前Maven项目名称(通常是模块名称,例如 order-service、goods-service)

  • version:定义当前项目版本号

注意:

  • 上面所说的资源可以是插件、依赖、当前项目。

  • 我们的项目如果被其他的项目依赖时,也是需要坐标来引入的。

导入Maven项目

  • 方式1:使用Maven面板,快速导入项目

打开IDEA,选择右侧Maven面板,点击 + 号,选中对应项目的pom.xml文件,双击即可

  • 方式2:使用idea导入模块项目

依赖管理

依赖配置

依赖:指当前项目运行所需要的jar包。一个项目中可以引入多个依赖:

例如:在当前工程中,我们需要用到logback来记录日志,此时就可以在maven工程的pom.xml文件中,引入logback的依赖。具体步骤如下:

  1. 在pom.xml中编写<dependencies>标签

  2. 在<dependencies>标签中使用<dependency>引入坐标

  3. 定义坐标的 groupId、artifactId、version

<dependencies><!-- 第1个依赖 : logback --><dependency><groupId>ch.qos.logback</groupId><artifactId>logback-classic</artifactId><version>1.2.11</version></dependency><!-- 第2个依赖 : junit --><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.12</version></dependency>
</dependencies>

4. 点击刷新按钮,引入最新加入的坐标

  • 刷新依赖:保证每一次引入新的依赖,或者修改现有的依赖配置,都可以加入最新的坐标

注意事项:

  1. 如果引入的依赖,在本地仓库中不存在,将会连接远程仓库 / 中央仓库,然后下载依赖(这个过程会比较耗时,耐心等待)

  2. 如果不知道依赖的坐标信息,可以到mvn的中央仓库(https://mvnrepository.com/)中搜索

搜索依赖的几种方式:

  • 利用中央仓库搜索的依赖坐标
  • 利用IDEA工具搜索依赖 Alt+Insert选择搜索依赖
  • 熟练上手maven后,快速导入依赖

依赖传递

依赖传递可以分为:

  1. 直接依赖:在当前项目中通过依赖配置建立的依赖关系

  2. 间接依赖:被依赖的资源如果依赖其他资源,当前项目间接依赖其他资源 

排除依赖

问题:之前我们讲了依赖具有传递性。那么A依赖B,B依赖C,如果A不想将C依赖进来,是否可以做到?

答案:在maven项目中,我们可以通过排除依赖来实现。

 <!--排除依赖, 主动断开依赖的资源-->
    <exclusions>
        <exclusion>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
        </exclusion>
    </exclusions>

依赖范围

在项目中导入依赖的jar包后,默认情况下,可以在任何地方使用。

如果希望限制依赖的使用范围,可以通过<scope>标签设置其作用范围。

作用范围:

  1. 主程序范围有效(main文件夹范围内)

  2. 测试程序范围有效(test文件夹范围内)

  3. 是否参与打包运行(package指令范围内)

<scope>test</scope>

scope主程序测试程序打包(运行)范例
compile(默认)YYYlog4j
test-Y-junit
providedYY-servlet-api
runtime-YYjdbc驱动

生命周期

Maven的生命周期就是为了对所有的构建过程进行抽象和统一。

Maven从大量项目和构建工具中学习和反思,然后总结了一套高度完美的,易扩展的项目构建生命周期。这个生命周期包含了项目的清理,初始化,编译,测试,打包,集成测试,验证,部署和站点生成等几乎所有构建步骤。

  • clean:清理工作。

  • default:核心工作。如:编译、测试、打包、安装、部署等。

  • site:生成报告、发布站点等。

生命周期阶段,其实我们常用的并不多,主要关注以下几个:

• clean:移除上一次构建生成的文件

• compile:编译项目源代码

• test:使用合适的单元测试框架运行测试(junit)

• package:将编译后的文件打包,如:jar、war等

• install:安装项目到本地仓库

生命周期本身不做任何实际工作 在Maven的设计中,实际任务(如源代码编译)都交由插件来完成。


http://www.mrgr.cn/p/45768468

相关文章

邮件营销工具如何提升营销效果?如何选择?

邮件营销工具的核心功能&#xff1f;怎么确保营销工具的安全性&#xff1f; 如何有效地进行营销推广成为了每个企业关注的焦点。其中&#xff0c;邮件营销工具因其针对性强、成本较低的特点&#xff0c;成为了企业推广的重要手段。那么&#xff0c;邮件营销工具如何提升营销效…

怎么在电脑桌面上添加待办事项?

对于上班族来说,每天面对繁杂的工作任务,很容易遗漏或混淆重要事项。因此,在电脑桌面上添加待办事项清单显得尤为重要。这样做的好处是,能够随时查看和跟进任务,确保每项工作都能按时完成。例如,将一天中的关键会议、提交报告的时间节点、需要联系的客户等事项清晰列出,…

推荐一款好用的文档工具:docsify

docsify是什么 docsify 可以快速帮你生成文档网站。不同于 GitBook、Hexo 的地方是它不会生成静态的 .html 文件,所有转换工作都是在运行时。如果你想要开始使用它,只需要创建一个 index.html 就可以开始编写文档并直接部署在 GitHub Pages。编写一些团队内部研发规范、api接…

Seurat -- Introduction to scRNA-seq integration 跟随学习记录

文章目录 数据是如何转换的原始ifnb数据对象Splits object后的数据对象数据对象构建完成后的标准流程Normalization后的数据对象scale 后的数据对象 不同的样本进行整合JoinLayers干了什么 数据是如何转换的 seurat object 中assays R N A l a y e r s RNAlayers RNAlayersco…

打造灵活可配置的凉鞋ERP以适应不同业务需求

为了满足客户需求和提高客户满意度,企业需要有一套高效、准确的订单管理系统。顺通订单助手正是这样一款能够满足企业需求的订单管理工具,本文将深入探讨顺通订单助手的各项功能及如何提升客户满意度。顺通订单助手的最大优势在于其高效的处理能力。这种高效的处理能力减少了…

【精简改造版】大型多人在线游戏BrowserQuest服务器Golang框架解析(2)——服务端架构

1.架构选型 B/S架构&#xff1a;支持PC、平板、手机等多个平台 2.技术选型 &#xff08;1&#xff09;客户端web技术&#xff1a; HTML5 Canvas&#xff1a;支持基于2D平铺的图形引擎 Web workers&#xff1a;允许在不减慢主页UI的情况下初始化大型世界地图。 localStorag…

【多线程】JUC的常见类 | Callable接口 | ReentranLock | 线程安全的集合类

文章目录 一、JUC的常见类1.Callable接口2.ReentranrLock1.ReentranLock的优势1.两种加锁方法2.提供了公平锁的实现3.提供了更强大的等待通知机制。 二、线程安全的集合类1.多线程环境使用ArraList1.synchronizedList2.CopyOnWriteArrayList写时拷贝。局限性&#xff1a; 2.多线…

如何通过文件外发管理系统,保护企业机密数据不外泄?

在互联网时代,企业与外界进行频繁的信息沟通已成为必要的一种业务模式,而在交互的过程中很可能会涉及到企业的相关敏感信息,一旦不慎流出就将会面临失控的风险。像员工在掌握了公司的关键信息后另起炉灶,设立同类型公司,成为“老东家”的竞争对手;不法企业以高薪为诱饵,…

光学雨量计:高精度测量降水量的理想解决方案

光学雨量计:高精度测量降水量的理想解决方案 河北稳控科技光学雨量计是一种高精度测量降水量的理想解决方案。它利用光学原理,通过光束的衰减来测量降雨强度和累积降水量。相比传统的雨量计,光学雨量计具有更高的精度和可靠性,成为现代气象观测的重要工具。 传统的雨量计通…

HarmonyOS NEXT应用开发案例—状态栏显隐变化

介绍 本示例介绍使用Scroll组件的滚动事件 onScroll 实现状态栏显隐变化。该场景多用于各种软件的首页、我的等页面中。 效果预览图使用说明加载完成后显示状态栏显隐变化页面,上下拖动屏幕,顶端状态栏出现显隐变化。实现思路在置顶位置使用stack组件添加两层状态栏。 源码参…

昨晚坐地铁看到一个程序员哥们哭了……

​ 昨晚做地铁,看见一个哥们掩面痛哭,一看就是同行,我感慨发了个朋友圈……评论10个人7个评的是”被裁“了嘛,还有3个说是不是失恋了…… ✅顺便提供个不错的机会,部门也在捞人,前后端均可投 作为一名软件工程师,我深知在这个数字化时代,技术更新换代的速度远超我们的想…

重磅新品发布!云耀数据库HRDS,享受轻量级的极致体验

2024年4月30日云耀数据库HRDS将在北京、上海、广州、中国香港、新加坡正式商用本文分享自华为云社区《重磅新品发布!云耀数据库HRDS,享受轻量级的极致体验!》,作者:GaussDB 数据库。所谓,凡有井水处,即能歌柳词。 大数据时代,凡有数据处,必有数据库。随着业务需求的不…

uniapp使用z-paging插件

1.通过dcloud插件市场下载,导入Hbuiderx,参考官网: https://z-paging.zxlee.cn/start/install.html#%E9%80%9A%E8%BF%87%E6%8F%92%E4%BB%B6%E5%B8%82%E5%9C%BA%E5%AE%89%E8%A3%85 2.通过npm下载(uniapp小程序项目发现通过npm下载方式,主包体积比方式1小,所以使用)npm insta…

Flutter 插件站新升级: 加入优秀 GitHub 开源项目

Flutter 插件站新升级: 加入优秀 GitHub 开源项目 视频 https://youtu.be/qa49W6FaDGs https://www.bilibili.com/video/BV1L1421o7fV/ 前言 原文 https://ducafecat.com/blog/flutter-awesome-github-repo-download 这几天晚上抽空把 Flutter 插件站升级&#xff0c;现在支…

自动生成数据库设计文档,支持多数据源批量生成(Word文档)

在做项目时通常使用PowerDesigner设计数据库,但在项目完成交付项目给客户的时候常常需要一份Word版本的数据库文档给客户,你不能指望每个客户都会用PowerDesigner,所以基于当前开发数据库生成数据库文档就是最佳选择,如果手动编写数据库文档那将是一件非常痛苦的费力不讨好…

IDEA中使用密钥认证的方式通过ssh连接远程服务器

在Windows电脑上生成证书 确保电脑上ssh可用ssh命令可用的话,就继续在命令行窗口输入ssh-keygen -t rsa并敲击回车键生成公钥证书和私钥证书文件。生成的目录也指明了,通常在用户的.ssh目录下,其中id_rsa是私钥证书文件,id_rsa.pub为公钥证书文件。将公钥证书放到Linux服务…

园子周边第3季-博客园T恤:设计初稿第3版预览

在鼠标垫之后,T恤是园子周边的重头戏,而设计是重头戏中的难题,不仅众口难调,而且要求更高,不像鼠标垫放在桌上,这可是要穿在身上。 虽然设计挑战高,但我们没有被吓倒,甚至痴心妄想设计出独到,让园子里的T恤有不一样的味道,于是借鉴鼠标垫的一点骄傲,继续让星星成为主…

一键实现风险识别+处理,天翼云AOne助手尽在“掌”握!

随着企业数字化建设的不断加速,优化站点性能与响应速度成为当今时代的一个重要课题。对于政务、金融类机构来说,其门户网站、信用卡中心等代表着对外形象,如果出现访问不通或者时延严重的现象将影响业务办理效率以及机构的公信力。为进一步保障业务可靠性,企业需要对站点业…

2024很漂亮的个人主页HTML源码

源码介绍 很漂亮的个人主页HTML源码&#xff0c;源码由HTMLCSSJS组成&#xff0c;记事本打开源码文件可以进行内容文字之类的修改&#xff0c;双击html文件可以本地运行效果&#xff0c;也可以上传到服务器里面 截图效果 源码下载 很漂亮的个人主页HTML源码