当前位置: 首页 > news >正文

Maven概述,搭建,使用

一.Maven概述

Maven是Apache软件基金会的一个开源项目,是一个有优秀的项目构建(创建)工具,它用来帮助开发者管理项目中的jar,以及jar之间的依赖关系,完成项目的编译,测试,打包和发布等工作.

我在当前学习阶段遇到过的jar文件:

MySQL官方提供的JDBC驱动文件,通常命名为mysql-connecttor-java-.....jar,用于连接和操作MySQL数据库.
MyBatis核心库文件mybtis-.....jar,提供了ORM框架的核心功能.

在使用这些jar包时遇到的问题: 

随着学习的深入,项目中用到的jar文件越来越多,管理这些jar就很麻烦,我们现在项目中用到的jar包都是从各自的官方去下载,很麻烦

引入Maven

Maven官方把常用的jar包都收集管理起来,每一个在服务器端都存在一个唯一的地址,我们只需要知道jar在maven官方仓库的地址即可,就可以把文件用过的maven下载到我们的项目中.

Maven中的概念 

Maven 管理的项目的根目录下都有一个pom.xml文件.

pom.xml文件指示Maven如何工作.

在pom.xml文件中配置项目基本信息以及项目构建信息等.比如:项目坐标,项目依赖的jar,插件,编译选项等.

一旦在pom.xml文件中配置了所依赖的jar,Maven会从构建仓库中下载相应的构件.

在项目中的pom.xml文中配置jar的地址(类似于vuecli项目中的package.json文件中的各种依赖),且可以自动下载.

坐标

Maven 给每个jar定义了唯一的标志,这个在Maven 中叫做项目的坐标,通过这个
坐标可以找到你需要 用到的任何版本的jar包.


groupId、artifactId、packaging、version 的组合被称为项目的坐标,它们形成了 项目的唯一标识,Maven 通过坐标来精确定位构件。其中 groupId,artifactId,version 是必须的,且这三项的值必须唯一,packaging是可选的(默认为 jar).

坐标是jar文件在maven仓库中唯一的地址,由四个部分组成由groupId、artifactId、packaging、version构成.

仓库

仓库是指管理jar文件的仓库

仓库可以分为:maven官方中央仓库(在国外,下载慢,只有一个)
                       全球各地的中央仓库镜像(在各个国家,下载快,多个)
                       本地仓库:第一次使用jar时,会从远程仓库下载,存放在自己电脑上,以后使用.

中央仓库全球共享,先将jar从中央仓库下载到本地仓库,然后在项目中引用本地仓库的jar.

下图是仓库之前的关系:


 

本地仓库中的jar文件可以通过中央仓库或中央仓库镜像两种途径下载

二.Maven开发环境搭建 

1.前提

我们需要安装jdk,并在电脑系统高级系统中新建系统变量

注意:    新建的系统变量名一定要为JAVA_HOME,路径为jdk的根目录.

Maven 工作时需要通过网络下载各种插件以完成任务,因此需要保证网络的通畅 

2.下载Maven服务器

Maven官网:http://maven.apache.org

在Maven官网下载Maven服务器

3.安装,配置Maven

点击下载二进制的apache-maven-3.8.8-bin.zip进行下载.

在系统环境中配置环境变量,在path中配置到bin目录

注意 :   要选择所安装maven服务器的bin目录

配置成功后在命令行输入命令(该命令有一个空格)mvn -version查看版本如下图

出现此文本,表示maven环境配置成功 

配置本地仓库地址

接下来我们根据情况再本地磁盘中建立通过Maven 下载后的文件夹,一般我们称为"仓库(repository)".

在这里我创建的文件是localRepository,作为本地仓库

我们如何将下载的jar文件储存到我们指定的仓库中呢?

需要在Maven的服务器解压的文件中找到conf文件夹下的setting.xml文件进行修改,如下图所示

这里我创建了一个副本文件,以防我们在设置过程中出错

配置1:指定本地仓库地址

修改后:

配置2:配置阿里云Maven 镜像仓库,下载速度更快
<mirror>
<id>aliMaven</id>
<name>aliyun Maven</name>
<url>http://Maven.aliyun.com/nexus/content/groups/public/</url>
<mirrorOf>central</mirrorOf>
</mirror>

修改后: 

4.在idea中设置Maven

在idea中任意一个项目中设置

点击idea左上角File

5.创建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"><modelVersion>4.0.0</modelVersion><!--模型版本4.0--><groupId>org.example</groupId><artifactId>mavenPro</artifactId><!--项目名称--><version>1.0-SNAPSHOT</version><!--编译信息--><properties><!--指定jdk的版本--><maven.compiler.source>8</maven.compiler.source><!--编译时支持的jdk版本为jdk8--><maven.compiler.target>8</maven.compiler.target><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><!--支持的编码集--></properties><!--配置项目中依赖的jar的坐标(jar的地址),jar文件地址在maven官网中寻找--><dependencies><!--mysql  jar的坐标--><dependency><groupId>mysql</groupId><!--第一级目录--><artifactId>mysql-connector-java</artifactId><!--第二级目录--><!--<type>jar</type> 包类型(文件类型)默认是jar--><version>8.0.16</version><!--第三级目录  版本号--></dependency><!--mybatis--><dependency><groupId>org.mybatis</groupId><artifactId>mybatis</artifactId><version>3.5.6</version></dependency></dependencies></project>

1.项目基本信息

<modelVersion>4.0.0</modelVersion>
<groupId>org.example</groupId>
<artifactId>mavendemo</artifactId>
<version>1.0-SNAPSHOT</version>

2.指定编译时使用的jdk版本

<properties><!--指定jdk的版本--><maven.compiler.source>8</maven.compiler.source><!--编译时支持的jdk版本为jdk8--><maven.compiler.target>8</maven.compiler.target><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><!--支持的编码集--></properties>

3.依赖信息 

Maven仓库官网(http://mvnrepository.com/)如下图所示

在此官网就可以下载自己所需开发jar包, 继续点击链接

这里演示下载mysql-jar包

在pom.xml文件的<dependencies></dependencies>标签中粘贴代码

安装多个jar包示例:

点击右侧M按钮,Dependencies目录中显示已下载的jar包 

下载的jar包存储在电脑硬盘中的本地仓库文件中 

四.Maven命令

  1. clean 清除之前所编译的内容
  2. compile 编译(通过maven将java文件编译为class文件) 
  3. package 打包项目(打包为jar)
  4. test 运行test包下面的内容
http://www.xdnf.cn/news/752959.html

相关文章:

  • leetcode-hot-100 (矩阵)
  • 设计模式——组合设计模式(结构型)
  • Android第十一次面试补充篇
  • 读《Go语言圣经记录》(二):深入理解Go语言的程序结构
  • NodeJS全栈开发面试题讲解——P10微服务架构(Node.js + 多服务协作)
  • VMware Tools 手动编译安装版
  • qwen-0.5b小模型的用处和显存要求
  • Unity Mono与IL2CPP比较
  • 大模型备案中语料安全详细说明
  • 开源库免费API服务平台 ALLBEAPI
  • unix/linux source 命令,其内部结构机制
  • unix/linux source 命令,其高级使用
  • 通义开源视觉感知多模态 RAG 推理框架 VRAG-RL:开启多模态推理新时代
  • 【前端】html2pdf实现用前端下载pdf
  • Python Django完整教程与代码示例
  • Vue3 + Element Plus 防止按钮重复点击的解决方案
  • LabVIEW多按键自动化检测系统
  • 03 APP 自动化-定位元素工具元素定位
  • LabVIEW双光子显微镜开发
  • lidar和imu的标定(四)小结
  • Rust 学习笔记:自定义构建和发布配置
  • Linux 内核中 skb_dst_drop 的深入解析:路由缓存管理与版本实现差异
  • MySql(十三)
  • 测量3D翼片的距离与角度
  • Spring MVC参数绑定终极手册:单多参/对象/集合/JSON/文件上传精讲
  • MATLAB实战:传染病模型仿真实现
  • 刚出炉热乎的。UniApp X 封装 uni.request
  • 鸿蒙OSUniApp离线优先数据同步实战:打造无缝衔接的鸿蒙应用体验#三方框架 #Uniapp
  • 一个完整的日志收集方案:Elasticsearch + Logstash + Kibana+Filebeat (一)
  • 43. 远程分布式测试实现