Java Maven day1014

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.rhkb.cn/news/447194.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【2D/3D-Lidar-SLAM】 2D/3D激光SLAM以及GMapping 与 Cartographer

这里写自定义目录标题 1. 激光SLAM分类2. 2D Lidar SLAM3. 3D Lidar SLAM4. GMapping**1. GMapping 系统架构**1.1 **粒子滤波器Particle Filter**1.2 **运动模型Motion Model**1.3 **传感器模型Sensor Model**1.4 **地图更新Map Update**1.5 **重采样Resampling**1.6 **闭环检…

nbsaas vue3管理后台框架

nbsaas vue3管理后台框架 一、项目概述 Nbsaas Admin Vue 是一个基于 Vue.js 3.0 构建的轻量级后台管理系统&#xff0c;结合了现代前端技术栈的最佳实践&#xff0c;旨在帮助开发者快速构建具有高可扩展性和良好用户体验的后台管理系统。该项目拥有简洁的 UI 设计&#xff0…

【Linux快速入门(二)】Linux与ROS学习之编译基础(make编译)

目录 零.前置篇章 一.make的由来 二.安装make 三.编写Makefile 四.编译运行 五.删除可执行文件 零.前置篇章 第一篇【Linux快速入门】Linux与ROS学习之编译基础&#xff08;gcc编译&#xff09;_linuxros-CSDN博客 一.make的由来 "make"是一个用于自…

STL.string(中)

string 迭代器findswapsubstrrfindfind_first_of&#xff08;用的很少&#xff09;find_last_of&#xff08;用的很少&#xff09;find_first_not_of&#xff08;用的很少&#xff09; 迭代器 int main() {//正向迭代器string s1("hello world!");string::iterator i…

力扣 237. 删除链表中的节点【狸猫换太子】

题目 解题 该题中链表节点的值都是唯一的&#xff0c;且只给出待删除的节点 node&#xff0c;而没有给出 head&#xff0c;显然是不可以遍历链表找到相应值来进行删除节点的。注意到题目只要求给定节点的值不在链表中&#xff0c;且链表节点个数减少一个即可&#xff0c;并非严…

起吊机革新:协议转换器解锁安全与效率

重工起吊机设备在工业生产中扮演着至关重要的角色&#xff0c;但其在实际应用中面临着一系列痛点问题。这些问题不仅影响了起吊机的性能和安全性&#xff0c;还限制了生产效率的提升。我们自主研发的MG协议转换器能够高效解决这些痛点&#xff0c;同时MG协议转换器作为一种关键…

第十五届蓝桥杯C/C++学B组(解)

1.握手问题 解题思路一 数学方法 50个人互相握手 &#xff08;491&#xff09;*49/2 &#xff0c;减去7个人没有互相握手&#xff08;61&#xff09;*6/2 答案&#xff1a;1024 解题思路二 思路&#xff1a; 模拟 将50个人从1到50标号&#xff0c;对于每两个人之间只握一…

[Linux] 逐层深入理解文件系统 (2)—— 文件重定向

标题&#xff1a;[Linux] 逐层深入理解文件系统 &#xff08;2&#xff09;—— 文件重定向 个人主页水墨不写bug &#xff08;图片来源于网络&#xff09; 目录 一、文件的读取和写入 二、文件重定向的本质 1.手动模拟重定向的过程——把标准输出重定向到redir.txt 2.重定向…

分享两种安装windows系统教程,学会后再也不需要花钱装系统了。

前期准备工作&#xff1a; 需要一个8G或16G的空U盘需要你安装的系统的镜像文件 一般是一个以 .iso 后缀结尾的文件 2.1 镜像文件获取方式 1&#xff09; 去windows 官网获取 2&#xff09;去 我告诉你 网址下载所需要的镜像文件 这个网址 分享了很多 我们常用的系统 大家可以按…

C++面向对象--------继承篇

目录 一.继承&#xff08;重点&#xff09; 1.1 概念 1.2 构造函数 1.2.1 派生类与基类的构造函数关系 1.2.2 解决方案 1.2.2.1 补充基类的无参构造函数 1.2.2.2 手动在派生类中调用基类构造函数 1.2.2.2.1 透传构造 1.2.2.2.2 委托构造 1.2.2.2.3 继承构造 1.3 对象…

中标麒麟v5安装qt512.12开发软件

注意 需要联网操作 遇到问题1&#xff1a;yum提示没有可用软件包问题 终端执行如下命令 CentOS7将yum源更换为国内源保姆级教程 中标麒麟V7-yum源的更换&#xff08;阿里云源&#xff09; wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Cento…

mysql 慢查询日志slowlog

慢查询参数 slow log 输出示例 # Time: 2024-08-08T22:39:12.80425308:00 #查询结束时间戳 # UserHost: root[root] localhost [] Id: 83 # Query_time: 2.331306 Lock_time: 0.000003 Rows_sent: 9762500 Rows_examined: 6250 SET timestamp1723127950; select *…

PS证件照换底色

ps工具&#xff1a;Adobe Photoshop 2021 文章目录 1. 扣取人物2. 更换底色 1. 扣取人物 2. 更换底色

SwiftUI 6.0(iOS 18)自定义容器值(Container Values)让容器布局渐入佳境(上)

概述 我们在之前多篇博文中已经介绍过 SwiftUI 6.0&#xff08;iOS 18&#xff09;新增的自定义容器布局机制。现在&#xff0c;如何利用它们对容器内容进行“探囊取物”和“聚沙成塔”&#xff0c;我们已然胸有成竹了。 然而&#xff0c;除了上述鬼工雷斧般的新技巧之外&…

10月15日 -- 11月15日 ,参与《人工智能导论》学习打卡赢B站大会员

一、活动参与地址 点击链接进行活动报名>>>https://momodel.cn/classroom/course/detail?id6173911eab37f12b14daf4a8&activeKeyinfo&srcbef3adb478 二、活动详情 进入链接点击报名&#xff0c;仅需每天参与吴超老师的《人工智能导论》打卡活动&#xff0…

NPCAP和WPCAP

NPCAP是专为Windows开发的一款网络抓包SDK,该SDK提供了被应用程序调用的库文件和系统驱动程序。通过Npcap,我们可以得到原始网络数据,即未经过TCP/IP协议栈的数据,也就是网卡收到的数据,同时呢,我们也可以通过NPCAP设置接收过滤器,这样收到的数据就是我们感兴趣的数据,…

[C++ 核心编程]笔记 4.1.4 类和对象 - 案例1

类和对象: 案例1: 设计立方体类(Cube) 求出立方体的面积和体积分别用全局函数和成员函数判断两个立方体是否相等。 设计方法: 创建立方体类设计属性设计行为 求立方体面积和体积分别用全局和成员函数 判断立方体是否相等 #include<iostream> using namespace std;clas…

正则表达式-“三剑客”(grep、sed、awk)

1.3正则表达式 正则表达式描述了一种字符串匹配的模式&#xff0c;可以用来检查一个串是否含有某种子串&#xff0c;将匹配的子串替换或者从某个串中取出符号某个条件的子串等&#xff0c;在linux中代表自定义的模式模版&#xff0c;linux工具可以用正则表达式过滤文本。Linux…

★ C++进阶篇 ★ AVL树实现

Ciallo&#xff5e;(∠・ω< )⌒☆ ~ 今天&#xff0c;我将继续和大家一起学习C进阶篇第五章----AVL树实现 ~ ❄️❄️❄️❄️❄️❄️❄️❄️❄️❄️❄️❄️❄️❄️澄岚主页&#xff1a;椎名澄嵐-CSDN博客C专栏&#xff1a;★ C进阶篇 ★_椎名澄嵐的博客-CSDN博客 ❄️…

Java基础:面向对象编程3

1 Java可变长参数 1.1 概述 Java 的可变长参数&#xff08;Varargs&#xff09;是在 Java 1.5 中引入的功能&#xff0c;允许方法接受任意数量的相同类型的参数。可变参数的语法是在参数类型后面加上三个点&#xff08;...&#xff09;&#xff0c;例如 int... numbers。 1.…