Maven学习以及安装配置教程

一.简介

Maven是Apache软件基金会推出用于java项目构建以及依赖管理的工具

官方网站:Maven Repository: commons-httpclient » commons-httpclient » 3.1 (mvnrepository.com)

二.详细了解Maven

1.项目构建

简单来说就是自动化构建java项目

构建就是从编译java源文件,到部署在sevlet容器中

2.Maven的生命周期

clean:清理,删除以前旧文件编译出的.class字节码文件

validate:验证,验证项目信息完整

compile:编译,将java源文件编译成.class字节码文件

test:测试,调用junit组件进行自动测试

package:打包,完成编译,测试,打包

verify:检查测试结果

install:打包,完成编译,测试,打包并部署到本地仓库

site:站点,翻译并生成该项目的站点文档

deploy:配置部署,完成编译,测试,打包并部署到本地仓库以及远程仓库

3.使用pom.xml文件管理依赖

在传统java web项目中需要引入jar包来使用一些组件,每个jar包需要自己找渠道下载并手动导入,jar包数量变多后可能还会有版本问题,并且往往一个jar包依赖于其他的jar包,不同的项目模块中需要不断的复制粘贴,这样重复操作显得更为繁琐。

Maven是通过核心文件pom.xml中编写标签指定坐标来进行依赖的管理的

//常见依赖的坐标
//声明一个依赖
<dependency>//公司/组织id<groupId>org.springframework.boot</groupId>//项目/模块id<artifactId>spring-boot-starter-web</artifactId>//版本信息       <version>2.7.11</version>
</dependency>

pom.xml常见标签含义

<?xml version="1.0" encoding="UTF-8"?>
<!--声明该xml文件的版本信息,使用的字符集-->
<!--xmlns命名空间 xmlns:xsi遵循的标签规范 xsi:schemalocation具体遵循的书写规范-->
<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遵循的模型版本,Maven2和Maven3只能是这个--><modelVersion>4.0.0</modelVersion><!--父依赖坐标信息--><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.7.11</version><!--该依赖认为开发者应该早就将maven依赖下载至本地仓库或私服上了,意思是直接从本地开始找这个依赖--><!--Maven找父模块依赖的顺序:1.从该项目里面有该父依赖相关的模块中找pom.xml2.从上级目录找3.定义了<relativePath/>直接从本地仓库找4.远程仓库找--><relativePath/> <!-- lookup parent from repository --></parent><!--这是个坐标,指向一个依赖--><!--公司/组织id--><groupId>com.ruoyi</groupId><!--项目/模块id--><artifactId>ruoyi</artifactId><!--版本信息--><version>3.6.2</version><!--项目的名称,生成文档显示--><name>ruoyi</name><!--项目url--><url>http://www.ruoyi.vip</url><!--声明该pom.xml文件的作用--><description>若依微服务系统</description><!--声明该pom.xml文件的打包方式,pom可以使它被别的pom.xml文件当依赖引用--><packaging>pom</packaging><!--一组子模块--><!--子模块打包方式一般是jar,父模块必须是pom--><modules><!--一个子模块--><module>ruoyi-modules</module><module>ruoyi-common</module></modules><!--动态引入版本信息,方便修改,父依赖里面的版本号不能自定义--><properties><java.version>1.8</java.version><spring-boot.version>2.7.7</spring-boot.version></properties><!-- 依赖声明 --><!--dependencyManagement往往在最顶级的父模块中使用,子模块使用时只需要声明使用的依赖不需要具体版本,这样方便在父依赖中做统一的版本处管理--><!--在这里的依赖,子模块引用时才会下载--><dependencyManagement><dependencies><!-- SpringBoot 依赖配置 --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-dependencies</artifactId><!--指向<properties>中自定义的标签,版本信息--><version>${spring-boot.version}</version><!--对应该pom.xml的package的打包类型,默认为jar--><type>pom</type><!--依赖项的适用范围 ,包括compile,provided,runtime,test,system,exclusions--><!--声明import的依赖,可以等价于直接在当前pom文件中定义的,而不是从父项目继承来的,同时只能在<dependencyManagement>中使用,这样解决了Maven单继承的问题,同时使用boot和cloud--><scope>import</scope></dependency></dependencies></dependencyManagement><!--声明一组依赖的坐标信息--><!--单独声明一组依赖的话需要具体的版本信息,包括子模块,没有时会从dependencyManagement中找,找不到就报错--><!--子模块默认引用这个里面的依赖--><dependencies><!--声明一个依赖的坐标信息--><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.0</version><!--声明这个依赖为可选依赖,模块b依赖于模块a,模块b需要显示的声明这个依赖才可以使用--><optional>true</optional><!--排除相关的一组依赖,解决依赖引用错误时使用--><exclusions><!--具体要排除的一个依赖--><exclusion><groupId>xxx</groupId><artifactId>xxx</artifactId></exclusion></exclusions></dependency></dependencies><!--Maven通过build中的plugin编译,打包项目,可以在自定义<build>标签中添加所需要的组件--><build><!--一组组件--><plugins><!--一个组件--><plugin><groupId>org.apache.maven.plugins</groupId><!--选择使用哪个版本的jdk进行源码编译--><artifactId>maven-compiler-plugin</artifactId><configuration><source>${java.version}</source><target>${java.version}</target><encoding>${project.build.sourceEncoding}</encoding></configuration></plugin></plugins><!--组件管理,与<dependencyManagement>类似,子模块可以自由选择引用这里面的组件--><pluginManagement><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId><version>${spring-boot.version}</version><executions><execution><goals><goal>repackage</goal></goals></execution></executions></plugin></plugins></pluginManagement></build><!--使用阿里云的nexus依赖镜像仓库--><repositories><repository><id>public</id><name>aliyun nexus</name><url>https://maven.aliyun.com/repository/public</url><releases><enabled>true</enabled></releases></repository></repositories><!--使用阿里云的nexus插件镜像仓库--><pluginRepositories><pluginRepository><id>public</id><name>aliyun nexus</name><url>https://maven.aliyun.com/repository/public</url><releases><enabled>true</enabled></releases><snapshots><enabled>false</enabled></snapshots></pluginRepository></pluginRepositories></project>

4.关于子父模块的问题

父模块如果使用标签声明全部依赖的话,比如包括Spring等,但是一些模块可能不需要Spring,就是个单一的工具包,那么这时候启动就会报错,一般有两种办法解决

第一种,父模块将所有模块共同需要使用的依赖放入里面,选择使用的依赖放入里面,需要使用的子模块使用时引即可,不使用就不引用

第二种,父模块将所有模块使用的所有依赖直接放入里面,需要使用的子模块使用时引即可,不使用就不引用

5.scope的分类

1.compile:默认,参与全过程

2.test:声明该依赖只参与测试,常见于junit

3.runtime:声明该依赖项目只参与测试和运行,常见于JDBC驱动

4.provided:不用打包,但相当于compile,打包阶段做了排除依赖的操作

5.system:不用打包,但是依赖不会从maven仓库下载,而是从本地文件中拿,需要添加systemPath的属性来自定义路径

6.import:声明import的依赖,可以等价于直接在当前pom文件中定义的,而不是从父项目继承来的,同时只能在中使用

三.安装以及配置教程

1.进入官网下载页面下载需要的版本,解压到非中文路径

2.配置环境变量并测试

右键此电脑》属性》高级系统设置》环境变量》系统变量添加Maven的安装路径在系统变量path里面添加

win+r》cmd》mvn -v》输出版本信息代表安装配置成功

3.指定仓库位置,更改阿里云镜像,指定jdk版本

打开Maven安装目录下conf目录下的setting.xml文件,修改配置

指定本地仓库位置,默认c盘
配置阿里云镜像,提升下载依赖速度

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

maven需要java环境,指定jdk版本

  <profiles><!-- java版本 --> <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>

四.使用Nexus搭建远程仓库

1. 了解Nexus

Nexus 是 Sonatype 公司发布的一款仓库管理软件,常被用来当做Maven远程仓库使用,有着简化本地仓库的维护工作,提升远程仓库的访问速度,友好的ui界面,开箱即用等优点

官网:声纳型代码存储库 OSS 工具 |声纳型 (sonatype.com)

Maven管理器主要有下面三种

Apache Archiva

JFrog Artifactory

Sonatype Nexus

2.安装配置教程

打开下载链接下载oss免费版本,pro为专业版本

Sonatype Code Repository OSS Tool | Sonatype

官网需要梯子才能下载,这里也可以下载我网盘里的

链接:https://pan.baidu.com/s/1b_kXclZ8xCHYgQWifLfJIA?pwd=wang
提取码:wang

选择windows版,解压到本地非中文路径

在bin目录下打开cmd,输入命令启动

.\nexus.exe /run

打开浏览器访问http://127.0.0.1:8081

端口被占用可以在etc目录下的nexus-default.properties文件,修改其中的application-port值

登录,右上角sign in,账号为admin,密码为\sonatype-work\nexus3目录下一个admin.password文件中的字符串

仓库名 仓库类型 类型含义
maven-central proxy 代理其他远程的仓库
maven-public group 几个仓库的集合
maven-release hosted 存放我们上传的仓库
maven-snapshots hosted

对于公司/组织而言,nexus仓库肯定是放在linux服务器上的

转载:(1条消息) Linux 部署 Nexus (下载、安装、使用)_nexus linux_Stephen·You的博客-CSDN博客

3.在项目中使用远程仓库

您需要将Maven配置为使用私有仓库。打开Maven的settings.xml文件,并添加以下配置:

<settings><mirrors><mirror><id>internal-repository</id><url>http://your-nexus-server:8081/repository/maven-public/</url><mirrorOf>*</mirrorOf></mirror></mirrors>
</settings>

your-nexus-server替换为您的Nexus服务器的主机名或IP地址。

要将项目部署到私有仓库,请将以下配置添加到项目的pom.xml文件中:

xmlCopy code<distributionManagement><repository><id>your-repo-id</id><url>http://your-nexus-server:8081/repository/your-repo-name/</url></repository>
</distributionManagement>

your-repo-id替换为您的项目的唯一标识符,将your-repo-name替换为您在Nexus中创建的仓库名称。

然后,使用以下命令将项目部署到私有仓库:

mvn deploy

现在,您可以在其他项目中使用您的私有仓库。只需在项目的pom.xml文件中添加以下配置:

xmlCopy code<repositories><repository><id>your-repo-id</id><url>http://your-nexus-server:8081/repository/your-repo-name/</url></repository>
</repositories>

确保将your-repo-idyour-repo-name替换为您在Nexus中创建的唯一标识符和仓库名称。

识符,将your-repo-name替换为您在Nexus中创建的仓库名称。

然后,使用以下命令将项目部署到私有仓库:

mvn deploy

现在,您可以在其他项目中使用您的私有仓库。只需在项目的pom.xml文件中添加以下配置:

xmlCopy code<repositories><repository><id>your-repo-id</id><url>http://your-nexus-server:8081/repository/your-repo-name/</url></repository>
</repositories>

确保将your-repo-idyour-repo-name替换为您在Nexus中创建的唯一标识符和仓库名称。

现在,当您运行mvn clean installmvn package时,Maven将从您的私有仓库中获取依赖项。
转载:maven私有仓库搭建-腾讯云开发者社区-腾讯云 (tencent.com)

Maven学习以及安装配置教程相关推荐

  1. mysql5.7.19解压教程_Mysql学习mysql5.7.19 winx64解压缩版安装配置教程

    <MysqL学习MysqL5.7.19 winx64解压缩版安装配置教程>要点: 本文介绍了MysqL学习MysqL5.7.19 winx64解压缩版安装配置教程,希望对您有用.如果有疑问 ...

  2. MySQL安装配置教程最全详解,一步一图解

    一. 下载MySQL Mysql官网下载地址: https://downloads.mysql.com/archives/installer/ 1. 选择要安装的版本,本篇文章选择的是5.7.31版本 ...

  3. centos7 mysql workbench_centOS下mysql workbench安装配置教程

    本文为大家分享了mysql workbench安装配置教程,供大家参考,具体内容如下 step0:安装mysql 在按照workbench之前,先安装mysql.指令是 yum install mys ...

  4. mysql5.7.20非安装版_mysql5.7.20\5.7.21免安装版安装配置教程

    mysql 下载安装配置 5.7.20 / 5.7.21,供大家参考,具体内容如下 1.下载mysql,下载地址 选择操作系统和版本,我是64位win10,点击 Download 后会跳到Oracle ...

  5. mysql5.17免安装教程_详细介绍MySql5.7.17免安装配置教程的示例代码

    这篇文章给大家详细介绍了MySql 5.7.17免安装配置教程,首先大家需要先下载mysql 5.7.17 的安装包,然后解压,具体配置过程大家通过本文一起学习吧 1.下载mysql-5.7.17-w ...

  6. php5.4 windows2003,PHP实战:Windows2003下php5.4安装配置教程(IIS)

    <PHP实战:Windows2003下php5.4安装配置教程(IIS)>要点: 本文介绍了PHP实战:Windows2003下php5.4安装配置教程(IIS),希望对您有用.如果有疑问 ...

  7. mysql5.718免安装教程_mysql5.7.18版本免安装配置教程

    MySQL分为安装版和免安装版 安装版后缀是msi,免安装版后缀是zip,免安装版直接解压出来配置一下就可以用. 安装版本的会写入系统注册表,在安装过程中会提示配置. 免安装的需要自己手动配置,不写入 ...

  8. mysql 5.7.11 x64_mysql 5.7.11 winx64安装配置教程

    mysql 5.7.11 winx64安装配置教程 2019-07-16 编程之家收集整理的这篇文章主要介绍了mysql 5.7.11 winx64安装配置教程,编程之家小编觉得挺不错的,现在分享给大 ...

  9. mysql 5.7.11 安装教程,MySQL数据库之mysql 5.7.11 安装配置教程

    本文主要向大家介绍了MySQL数据库之mysql 5.7.11 安装配置教程 ,通过具体的内容向大家展现,希望对大家学习MySQL数据库有所帮助. 六步轻松搞定mysql5.7.11的安装 1.下载安 ...

最新文章

  1. 首届“AIIA杯”人工智能巡回赛起航,5大赛区邀你来战
  2. 百度超级链XChain(3)平台特点
  3. Android Studio系列(二)使用Android Studio开发/调试整个android系统源代码(不定时更新)
  4. 多线程与高并发(四):LockSupport,高频面试题,AQS源码,以及源码阅读方法论
  5. (mac)阿里云ECS服务器配置过程
  6. 搜索引擎的竞价排名是怎样实现的?
  7. 三星旗舰Galaxy Note 10系列发布 5G版本国行尝鲜价8299元
  8. Jedis问题解决方案大全:No more cluster attempts left
  9. spring 定时器_细数那些使用过的定时器
  10. FY-4A建立中国区域图像行列号转经纬度的经纬度查找表进行几何校正
  11. 华为android手机怎么解锁,华为手机如何解锁 华为手机解锁方法【图文详解】
  12. 计算机IP地址pin,怎样PIN ip地址
  13. XPDL与WS-BPEL的比较之五:形势与未来
  14. 应用宝shangjia安全评估报告_《安全评估报告》提交指引
  15. PostgreSQL的streaming replication
  16. Python基础-19-魔法方法(常用)
  17. Win系统下如何安装Maven教程
  18. 转载【数据集】计算机视觉,深度学习,数据挖掘数据集整理
  19. 以 rte_mempool_ops_table 为例描述 dpdk 程序库链接顺序对程序执行的影响
  20. 如何将mkv格式电影转换为MP4格式

热门文章

  1. UE5开发仿原神风格MMOARPG大型网络demo演示
  2. jav核心(十四):集合类型操作:Collection、List、Set;Map集合;Iterator迭代器
  3. 找货“天价樱桃”一盒千元比切糕贵
  4. PyQt5实例 画板小程序
  5. 汉得企业级PaaS平台 HZERO 发布 1.5.0.RELEASE 版本
  6. 数字(金额)的格式化
  7. CSS学习中|插入图片和背景图片区别
  8. qml 背景透明 图片显示正常_聊天背景半透明唯美壁纸图片
  9. Android:pt 、sp、dp之间的换算
  10. java卡蜜_lol青钢影-青钢-lol青钢影连招顺序