Java Maven day1014

news2025/1/20 19:58:38

ok了家人们,今天学习了如何安装和配置Maven项目,我们一起去看看吧

.Maven概述

1.1 Maven作用

Maven 是专门用于管理和构建 Java 项目的工具,它的主要功能有:
  • 提供了一套标准化的项目结构
  • 提供了一套标准化的构建流程(编译,测试,打包,发布……
  • 提供了一套依赖管理机制
标准化的项目结构:
项目结构我们都知道,每一个开发工具( IDE )都有自己不同
的项目结构,它们互相之间不通用。我再 eclipse 中创建的目
录,无法在 idea 中进行使用,这就造成了很大的不方便,如下
: 前两个是以后开发经常使用的开发工具。
Maven 提供了一套标准化的项目结构,所有的 IDE 使用
Maven 构建的项目完全一样,所以 IDE 创建的 Maven 项目可以
通用。如下图右边就是 Maven 构建的项目结构。
标准化的构建流程:
如上图所示我们开发了一套系统,代码需要进行编译、测试、打包、发布,这些操作如果需要反复进行就显得特别麻烦,而Maven提供了一套简单的命令来完成项目构建。
依赖管理:
依赖管理其实就是管理你项目所依赖的第三方资源( jar 包、
插件)。如之前我们项目中需要使用 JDBC Druid 的话,就需
要去网上下载对应的依赖包(当前之前是老师已经下载好提供
给大家了),复制到项目中,还要将 jar 包加入工作环境这一
系列的操作。如下图所示
Maven 使用标准的 == 坐标 == 配置来管理各种依赖,只需要简单的配置就可以完成依赖管理。
如上图右边所示就是 mysql 驱动包的坐标,在项目中只需要写
这段配置,其他都不需要我们担心, Maven 都帮我们进行操作了。

1.2 Maven简介

Apache Maven 是一个项目管理和构建工具,它基于项目对象
模型 (POM) 的概念,通过一小段描述信息来管理项目的构建、
报告和文档。
官网 : http://maven.apache.org/
1.2.1 Maven模型
  • 项目对象模型 (Project Object Model)
  • 依赖管理模型(Dependency)
  • 插件(Plugin)

项目对象模型就是将我们自己抽象成一个对象模型,有自己专属的坐标.
依赖管理模型则是使用坐标来描述当前项目依赖哪些第三方jar包。
如我们需要编译, Maven 提供了一个编译插件供我们使用,
我们需要打包, Maven 就提供了一个打包插件提供我们使用等。
1.2.2 Maven仓库
大家想想这样的场景,我们创建 Maven 项目,在项目中使用
坐标来指定项目的依赖,那么依赖的 jar 包到底存储在什么地
方呢?其实依赖 jar 包是存储在我们的本地仓库中。而项目运
行时从本地仓库中拿需要的依赖 jar 包.
  • 本地仓库:自己计算机上的一个目录
  • 中央仓库:由Maven团队维护的全球唯一的仓库       地址: https://repo1.maven.org/maven2/
  • 远程仓库(私服):一般由公司团队搭建的私有仓库

  • 当项目中使用坐标引入对应依赖jar包后,首先会查找本地仓库中是否有对应的jar包:
        如果有,则在项目直接引用;
        如果没有,则去中央仓库中下载对应的jar 包到本地仓库.
  • 还可以搭建远程仓库,将来jar包的查找顺序则变为:

        本地仓库——远程仓库——中央仓库

.Maven安装配置

2.1 Maven的下载

官方网站: http://maven.apache.org/
下载页面: http://maven.apache.org/download.cgi
  • 点击archives(存档)

  • 选择版本,然后选择binaries(二进制文件)

  • 下载压缩包

2.2 Maven的安装

注意: maven 的安装需要依赖 JDK 的安装,所以必须先安装完成JDK 且配置好 jdk 环境变量后在进行 maven 的安装!!
maven 的安装很简单,就是直接解压文件就行了。(安装路径避免包含中文!)
目录
功能说明
bin
二进制的可执行文件,如: mvn.cmd maven 的核心可执行文件
boot
第三方类加载器插件,类似于 ClassLoader
conf
配置文件夹,其中的 settings.xml 是用于 配置本地 仓库
lib
maven 自身运行所需要的 jar

2.3 Maven的环境变量配置

  • 右击我的电脑,选择属性

  • 点击高级系统设置

  • 点击环境变量

  • 在系统变量区里点击:新建

  • 新建变量名为MAVEN_HOME,变量值为你的maven解压文件的目录,设置完成后点击确定

  • 系统变量里双击Path变量,或者单击path再点编辑

  • 新建%MAVEN_HOME%\bin

  • 键盘win+r 弹出运行,输入cmd,点击确定

  • cmd窗口中键入mvn -version后回车,如果出现下面的版本号,及说明maven安装成功

2.4 本地仓库的配置

  • 在一个磁盘中创建一个文件夹,取名repository

  • 打开maven的安装目录,选择conf文件夹中的setting.xml文件

  • 修改文件settings.xml
打开 settings.xml 文件:发现本地仓库默认的地址为当前用户的/.m2/repository 目录。
我们需要自己重新设置本地仓库的地址。使用localRepository配置,修改成刚刚创建的文件夹的目录.

2.5 配置阿里云私服

安装好 Maven 时,要及时的修改 Maven 下载的镜像地址,最
好改为国内的下载镜像,例如阿里云中央仓库,华为云中央仓库。
同样打开 conf 文件夹中的 setting.xml 文件,找到标签,把下
面的代码复制到标签中。
<mirror>
<id>aliyunmaven</id>
<mirrorOf>*</mirrorOf>
<name>阿里云公共仓库</name>
<url>https://maven.aliyun.com/repository/public
</url>
</mirror>

2.6 配置JDK

  • 打开setting.xmlctrl+f,搜索/path/to/tomcat/instance
  • 复制以下代码到红线位置,这里是用的1.8的,根据每个人不同自己来适当修改
<!-- java1.8版本 -->
<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>

.IDEA 配置 Maven

3.1 IDEA配置Maven环境

  • 选择 IDEA File --> Settings

  • 搜索 maven,每次在 IDEA 创建 Maven 项目时,按照上述方法进行配置即可。

3.2 Maven 坐标详解

  • Maven 中的坐标是资源的唯一标识
  • 使用坐标来定义项目或引入项目中需要的依赖
Maven 坐标主要组成
  • groupId:定义当前Maven项目隶属组织名称(通常是域名反写,例如:com.baidu
  • artifactId:定义当前Maven项目名称(通常是模块名称,例如 product-service
  • version:定义当前项目版本号
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connectorjava</artifactId>
<version>8.0.25</version>
</dependency>

3.3 IDEA创建Maven项目

  • 创建模块,选择Maven,点击Next

  • 填写模块名称,坐标信息,点击finish,创建完成

  • 创建好的项目目录结构如下:

<?xml version="1.0" encoding="UTF-8"?>
<project
xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchemainstance"
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.lzw</groupId>
<artifactId>maven_01</artifactId>
<version>1.0-SNAPSHOT</version>
<!--当前项目的参数-->
<properties>
<!--Maven默认使用的是JDK1.5版本-->
<!--当前项目使用jdk1.8进行开发和编译-->
<maven.compiler.source>8</maven.compiler.source
>
<maven.compiler.target>8</maven.compiler.target
>
</properties>
</project>

3.4 IDEA导入Maven项目

  • 选择右侧Maven面板,点击 +

  • 选中对应项目的pom.xml文件,双击即可

        

  • 如果没有Maven面板,选择
View --> Appearance --> Tool Window Bars

3.5 依赖管理

3.5.1 使用坐标引入jar
  • 在项目的 pom.xml 中编写 标签
  • 在 标签中 使用 引入坐标
  • 定义坐标的 groupIdartifactIdversion
  • 点击刷新按钮,使坐标生效
  • 具体的坐标我们可以到如下网站进行搜索:https://mvnrepository.com/
<dependencies>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connectorjava</artifactId>
<version>8.0.25</version>
</dependency>
</dependencies>
3.5.2 快捷方式导入jar包的坐标
  • pom.xml 中 按 alt + insert,选择 Dependency

  • 在弹出的面板中搜索对应坐标,然后双击选中对应坐标

  • 点击刷新按钮,使坐标生效

3.5.3 依赖范围
通过设置坐标的依赖范围 (scope) ,可以设置 对应 jar 包的作用
范围:编译环境、测试环境、运行环境。
如下图所示给 junit 依赖通过 scope 标签指定依赖的作用范
围。 那么这个依赖就只能作用在测试环境,其他环境下不能
使用
依赖范围
编译
classpath
测试
classpath
运行
classpath
例子
compile
YYY
logback
test
-Y-
Junit
provided
YY-
servlet-api
runtime
-YY
jdbc 驱动
system
YY-
存储在本地的
jar
  • compile :作用于编译环境、测试环境、运行环境
  • test : 作用于测试环境。典型的就是 Junit 坐标,以后使用
    Junit 时,都会将 scope 指定为该值
  • provided :作用于编译环境、测试环境。我们后面会学习
    servlet-api ,在使用它时,必须将 scope 设置为该值,不
    然运行时就会报错
  • runtime : 作用于测试环境、运行环境。 jdbc 驱动一般将
    scope 设置为该值,当然不设置也没有任何问题
注意:如果引入坐标不指定 scope 标签时,默认就是 compile
值。以后大部分 jar 包都是使用默认值。

.maven项目构建的生命周期

4.1 maven项目构建的生命周期

Maven 出现之前,项目构建的生命周期就已经存在,软件
开发人员每天都在对项目进行清理,编译,测试及部署。虽然
大家都在不停地做构建工作,但公司和公司间,项目和项目
间,往往使用不同的方式做类似的工作。
Maven 的生命周期就是为了对所有的构建过程进行抽象和统
一。 Maven 从大量项目和构建工具中学习和反思,然后总结
了一套高度完美的,易扩展的生命周期。这个生命周期包含了
项目的清理,初始化,编译,测试,打包,集成测试,验证,
部署和站点生成等几乎所有构建步骤。
Maven 的生命周期是抽象的,这意味着生命周期本身不做任
何实际工作, Maven 的设计中,实际任务(如源代码编
译)都交由插件来完成。
maven 拥有三套相互独立的生命周期,分别是 clean default
site clean 生命周期的目的是 清理项目 default 生命周
期的作用是 构建项目 site 生命周期的目的是 构建项目站点.
clean 生命周期
clean 生命周期的目的是清理项目,它包含三个阶段:
  • pre-clean 执行一些清理前需要完成的工作;
  • clean 清理上一次构建生成的文件;
  • post-clean 执行一些清理后需要完成的工作;

default生命周期

default 生命周期定义了真正构建项目需要执行的所有步骤,
它是所有生命周期中最核心的部分。其中的重要阶段如下:
compile :编译项目的源码,一般来说编译的是
src/main/java 目录下的 java 文件至项目输出的主 classpath
目录中;
test :使用单元测试框架运行测试,测试代码不会被打包
或部署;
package :接收编译好的代码,打包成可以发布的格式,
jar war
install : 将包安装到本地仓库,供其他 maven 项目使用;
deploy :将最终的包复制到远程仓库,供其他开发人员或
maven 项目使用
site 生命周期
site 生命周期的目的是建立和发布项目站点, maven 能够基于
pom 文件所包含的项目信息,自动生成一个友好站点,方便
团队交流和发布项目信息。该生命周期中最重要的阶段如下:
site :生成项目站点文档;

4.2 maven生命周期相关命令

  • compile :编译
  • clean:清理
  • test:测试
  • package:打包
  • install:安装项目到本地仓库

.其他

5.1 编译插件

当我们点击 compile 编译的时候发现 maven 编译的时候使用的
插件是: maven-compiler-plugin:3.1:compile (default
compile) 。该插件默认编译的 jdk 版本是 1.5. 编译生成的 .class
文件,让 idea 中的 jdk1.8 运行, 1.8 jdk 运行 1.5 编译的 class
文件,会显示已过时字样。所以这里我们需要手动配置下 jdk
的编译版本,使用 jdk1.8
<!--插件管理-->
<build>
<plugins>
<!--编译插件:jdk1.8-->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compilerplugin</artifactId>
<version>3.8.1</version>
<configuration>
<!-- put your configurations
here -->
<!--源码-->
<source>1.8</source>
<target>1.8</target>
</configuration>
</plugin>
</plugins>
</build>

5.2 测试插件

Maven test 指令运行测试代码存在中文乱码问题 , 用这个插件可以解决
<!--test插件-->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.16</version>
<configuration>
<forkMode>once</forkMode>
<argLine>-Dfile.encoding=UTF-8</argLine>
</configuration>
</plugin>

5.3 更新依赖索引

有时候给 idea 配置完 maven 仓库信息后,在 idea 中依然搜索
不到仓库中的 jar 包。这是因为仓库中的 jar 包索引尚未更新到
idea 中。这个时候我们就需要更新 idea maven 的索引了,
具体做法如下:
打开设置 ---- 搜索 maven----Repositories---- 选中本地仓库 -----
点击 Update
OK了家人们,下次见bye

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

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

相关文章

力扣41~45题

题41&#xff08;困难&#xff09;&#xff1a; 分析&#xff1a; 这题我开始没什么思路,记录第一个逼我看评论的&#xff0c;后面看评论的方法&#xff0c;真解&#xff0c;借助一个数组&#xff0c;将nums对应数字放对应位置&#xff0c;然后如果下标和数字不同就返回 pyth…

支撑每秒数百万订单无压力,SpringBoot + Disruptor 太猛了!

文章目录 一、支撑每秒数百万订单无压力&#xff0c;SpringBoot Disruptor 太猛了&#xff01;二、项目环境配置1.Maven 配置 (pom.xml)2.Yaml 配置 (application.yml)3.Disruptor 的核心实现4.定义事件工厂&#xff08;OrderEventFactory&#xff09;5.定义事件处理器&#x…

概率 随机变量以及分布

一、基础定义及分类 1、随机变量 随机变量是一个从样本空间&#xff08;所有可能结果的集合&#xff09;到实数集的函数。&#xff08;随机变量的值可以是离散的&#xff0c;也可以是连续的。 &#xff09; 事件可以定义为随机变量取特定值的集合。 2、离散型随机变量 随机变…

怎么才能算AI智能体?

科技界对 AI 智能体的痴迷愈演愈烈。销售从智能体到自动化系统&#xff0c;比如像 Salesforce 和 Hubspot 这样的公司声称可以提供具有颠覆性的 AI 智能体。但是&#xff0c;我还没有看到一个真正令人信服、完全自主的基于 LLM 的智能体。市场上充斥着各种 “废物机器人”&…

OIDS与ERP:物料管理的高效协同

添加HanTop-MKT&#xff0c;咨询物料管理协同解决方案 客户案例 背景&#xff1a; 在当前快速发展的3C自动化行业&#xff0c;企业面临着前所未有的挑战。产品生命周期的缩短、个性化需求的增长以及市场变化的加速&#xff0c;都要求企业必须具备快速响应的能力。在这样的环…

一个月学会Java 第15天 枚举与Debug

Day15 枚举与Debug 这节课我们来看看枚举&#xff0c;和Debug&#xff0c;当我们学完并会用debug之后呢&#xff0c;编码会非常的舒服&#xff0c;而且debug就是调试嘛&#xff0c;所以我们会了debug之后&#xff0c;在程序哪里出问题也可以进行锁定。 第一章 枚举 枚举并不是非…

Spring Boot知识管理:提升团队协作效率

2相关技术 2.1 MYSQL数据库 MySQL是一个真正的多用户、多线程SQL数据库服务器。 是基于SQL的客户/服务器模式的关系数据库管理系统&#xff0c;它的有点有有功能强大、使用简单、管理方便、安全可靠性高、运行速度快、多线程、跨平台性、完全网络化、稳定性等&#xff0c;非常适…

探索巅峰性能 |迅为 RK3588开发板深度剖析

RK3588作为瑞芯微公司旗下一款高端处理器的杰出代表&#xff0c;凭借卓越的性能与多样化的外设接口成为了众多开发和爱好者的首选。随着RK3588在市场上的广泛应用&#xff0c;大家不禁要提出疑问&#xff1a;RK3588究竟强在何处&#xff1f;在2022年&#xff0c;北京迅为电子推…

【Linux网络编程】--- Linux基本指令(上)

Welcome to 9ilks Code World (๑•́ ₃ •̀๑) 个人主页: 9ilk (๑•́ ₃ •̀๑) 文章专栏&#xff1a; Linux网络编程 &#x1f3e0; ls命令 语法 : ls -[选项] [目录或文件] 功能 : 对于目录,该命令列出该目录下的所有子目录与文件;对于文件,将列出文件名…

STL.string(上)

string string类string类构造string类对象的容量操作size和lengthmax_sizeappend小总结下size、capacity、append、operatorresizereserve 初识迭代器附录1. vs下string结构的说明&#xff08;解释前文为什么capacity是16而不是别的&#xff09; 由于string创始初期没有参照导致…

1.centos 镜像

centos 它有官网的下载地址&#xff1a;https://vault.centos.org/ 选择想要的版本&#xff0c;我选择 centos7.8 进入到镜像目录 isos 选择 x86_64 选择想要的版本&#xff0c;我选择 CentOS-7-x86_64-DVD-2003.iso 安装就正常安装就行。我选择虚拟机安装。这个参考&…

一区鱼鹰优化算法+深度学习+注意力机制!OOA-TCN-LSTM-Attention多变量时间序列预测

一区鱼鹰优化算法深度学习注意力机制&#xff01;OOA-TCN-LSTM-Attention多变量时间序列预测 目录 一区鱼鹰优化算法深度学习注意力机制&#xff01;OOA-TCN-LSTM-Attention多变量时间序列预测预测效果基本介绍程序设计参考资料 预测效果 基本介绍 1.基于OOA-TCN-LSTM-Attenti…

Java 入门基础篇11 - java基础语法

一 流程控制 1.1 流程控制语句介绍 一个java程序有很多条语句组成&#xff0c;流程控制语句是用来控制程序中的各语句执行的顺序&#xff0c;通过流程语句控制让程序执行顺序达到我们想要实现的功能。 其流程控制方式采用结构化程序设计中规定的三种基本流程结构&#xff1a;…

金融信用评分卡建模项目:AI辅助

最近我一直忙着开发一个信用评分卡建模工具&#xff0c;所以没有时间更新示例或动态。今天&#xff0c;我很高兴地跟大家分享&#xff0c;这个工具的基本框架已经完成了&#xff0c;并且探索性的将大语言模型&#xff08;AI&#xff09;整合了进去。目前ai在工具中扮演智能助手…

探索人工智能:深度解析未来科技的核心驱动力

目录 &#x1f354; 人工智能的应用方向 &#x1f354; 人工智能的发展历史 &#x1f354; 人工智能、机器学习、深度学习关系 &#x1f354; 为什么学习机器学习&#xff1f; &#x1f354; 小节 学习目标 &#x1f340; 了解人工智能的应用方向 &#x1f340; 了解人工智…

CICD持续集成交付与持续交付

一 CICD是什么 CI/CD 是指持续集成&#xff08;Continuous Integration&#xff09;和持续部署&#xff08;Continuous Deployment&#xff09;或持续交付&#xff08;Continuous Delivery&#xff09; 1.1 持续集成&#xff08;Continuous Integration&#xff09; 持续集成…

javascript object

用const去define一个constant 用let (如果要reassign的话) 一个变量。

每天3分钟,彻底弄懂神经网络的优化器(十一)AdamW

1. AdamW算法的提出 AdamW算法是由Ilya Loshchilov和Frank Hutter提出的。这一算法的详细描述和原理可以在论文《Decoupled Weight Decay Regularization》1中找到&#xff0c;该论文发表于2017年。在论文中&#xff0c;作者指出了传统Adam算法在权重衰减&#xff08;weight d…

初等数学几百年重大错误:将根本不是无穷集的真子集误为其真子集

黄小宁 【摘要】长为1的直线段形橡皮筋A拉长为长为2的橡皮筋B&#xff08;可二等分&#xff09;&#xff0c;去掉拉力使B缩短成原来的A&#xff0c;A不是B的一半。同样可证直线段L均匀压缩变短为直线段D&#xff5e;L不能成为L的一部分。数学一直误以为D是L的一部分使康脱推出…

C/C++栈和队列

一.队列 结构定义 FIFO:队列是一个先进先出的数据结构; 只允许从队首出元素,从队尾入元素; head和tail所包含的区间是左闭开的; 入队操作 没用真实将一号元素删除,而是将head指针向后移动一位,进行逻辑上的删除; 出队操作 将新元素储存在队尾指针所在的位置,并将队尾指针…