开发工具maven介绍及使用说明

开发工具maven介绍及使用说明



一、Maven简介和快速入门

1.1 maven简介:

为Java项目项目构建、依赖管理的一款工具。
项目构建:指将源代码、配置文件、资源文件等转化为能够运行或部署的应用程序或库的过程!
开发工具idea构建、maven构建
区别:1、maven构建方便(mvn package or 可视化);2、构建要求项目结构(idea、ecplise、maven)不同的开发项目构建的项目结构不一样,但是maven一样的。

1.2 maven安装和配置

先决条件:java环境,java_home环境变量
1、官网下载该工具包,解压至无中文的目录下,配置环境变量(maven_home、path)
2、验证安装成功?mvn -v
3、修改配置文件:依赖本地缓存位置(本地仓库位置)、maven下载镜像(提高远程仓库的下载效率)、maven选用编译项目的jdk版本!
依赖缓存的路径有三个:本地仓库、第三方仓库、中央仓库(配置的镜像)
4、idea配置本地maven:idea是项目独立的每一个新的项目都需要再配置一下
默认自带maven配置软件,建议使用本地配置好的maven
5、自己电脑上的maven版本情况:有三种,idea自带的、maven3.8、maven3.6(在用)

二、基于idea的maven工程创建

2.1梳理Maven工程的GAVP属性

GroupId(com.{公司/BU}.业务线.[子业务线])、ArtifactId(产品线名-模块名)、Version(版本号:新模块.新功能.修复bug)、Packaging(jar-普通java工程;war-javaweb工程;pom-不打包用作继承的父工程)

2.2idea构建Maven JavaSE工程

新建在Empty Project下新建一个module,其中Build system选择Maven(即构建工具),Advanced Settings也需要设置。

2.3idea构建Maven JavaEE工程

1、手动创建
新建javase maven工程后,补全所需的文件目录webapp - WEB-INF - web.xml,修改pom.xml的打包方式war,刷新和检验,webapp目录处出现小蓝点表示成功。
2、插件方式创建
安装插件JBLJavaToWeb→创建javase maven项目→点击项目右键快速补全web项目(JBLJavaToWeb)

三、使用方法

在它的配置文件中pom.xml

3.1依赖管理和配置

统一管理版本号、scope属性指定依赖的作用范围

3.2依赖传递和依赖冲突

依赖传递:自动导入依赖的依赖(简化依赖的导入、确保版本正确性)
note:查看依赖是否有依赖Compile Dependencies,有的话一直追溯到前面
依赖冲突:发现已存在依赖(重复依赖)会终止依赖传递!避免循环依赖和重复依赖
依赖冲突的解决原则:比如A依赖B1.0,C依赖B2.0会导入谁?
1、谁短谁优先(引用路径长度)2、谁上谁优先!denpendencies声明的先后顺序
只要发生冲突了后面的依赖传递全部终止!(比喻树枝树叶),如果程序报错那么此时再把这个依赖引入即可。

3.3依赖导入失败和解决方法

原因:下载依赖时网络故障或服务器宕机、版本号、本地Maven仓库或缓存被污染导致无法正确使用现有的依赖项且无法重新下载
解决方案:
1.检查网络连接和 Maven 仓库服务器状态。
2.确保依赖项的版本号与项目对应的版本号匹配,并检查 POM 文件中的依赖项是否正确。
3.清除本地 Maven 仓库缓存(lastUpdated 文件—可能由于网络原因导致没下成功/下载一半),因为只要存在lastupdated缓存文件,刷新也不会重新下载。本地仓库中,根据依赖的gav属性依次向下查找文件夹,最终删除内部的文件,刷新重新下载即可!
方法:手动到文件目录下清理;使用脚本:脚本代码如下

@echo off
rem 这里写你的仓库路径
set REPOSITORY_PATH=D:\repository
rem 正在搜索...
for /f "delims=" %%i in ('dir /b /s "%REPOSITORY_PATH%\*lastUpdated*"') do (
del /s /q %%i
)
rem 搜索完毕
pause

3.4扩展构建管理和插件配置

项目构建过程如下:指将源代码、依赖库和资源文件等转换成可执行或可部署的应用程序的过程
maven项目构建过程
1、主动触发的场景
重新编译、打包、部署本地或私服仓库
2、创建方式:命令、可视化(选中右侧的maven相关项目下的Lifecycle)
关于命令创建如下:
maven命令创建
install:将项目→jar,pom.xml→pom,只能打包生成jar,其他项目可以根据gav属性进行调用。
clean:清理了target文件,但是install打包的还在
3、关于命令周期:自动触发同一周期前的命令!
清理周期:clean,对项目编译生成文件进行清理
构建周期:compile test package install/deploy,定义真正构件时所执行的所有步骤,是生命周期中最核心的部分。
报告周期:site
打包:mvn clean 本地仓库:mvn clean install
4、最佳使用方案
打包: mvn clean package:jar/war根据gavp中p属性来的
重新编译: mvn clean compile
本地部署: mvn clean install
5、周期,命令和插件:周期→包含若干命令→包含若干插件,使用周期命令构建,简化构建过程,最终进行构建的是插件!插件辅助程序进行构建!
插件配置:比如maven自带war版本的插件但是与jdk17不兼容,因此可以使用下面的代码配置插件

<plugins>
  <plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-war-plugin</artifactId>
    <version>3.2.2</version>
  </plugin>

四、maven继承和聚合特性

4.1 maven工程继承

继承概念:Maven 继承是指在 Maven 的项目中,让一个项目从另一个项目中继承配置信息的机制。继承可以让我们在多个项目中共享同一配置信息,简化项目的管理和维护工作。
作用:在父工程中统一管理项目中的依赖信息,进行统一版本管理!
场景:同一个项目下的多个module可能要使用同一个依赖
思路1:直接在父工程中引入依赖,但是会引入多余的依赖,
思路2:父工程不引入依赖,只做依赖版本的声明,用来声明依赖信息,不会下载依赖!可以被子工程继承版本号,命令则表示导入依赖。
父工程的打包方式是pom:不打包也不写代码。进行依赖管理。
子工程中标签指定继承父工程的gav属性,不用指定依赖的version属性了。但是如果指定版本了就会覆盖父工程中的版本。关于子工程的gav属性,可以单独也可以gv属性与父工程一致。

4.2maven工程聚合

概念:将多个项目组织到一个父级项目中,通过触发父工程的构建,统一按顺序触发子工程构建的过程!!
作用:a. 统一管理子项目构建:通过聚合,可以将多个子项目组织在一起,方便管理和维护。
​ b. 优化构建顺序:通过聚合,可以对多个项目进行顺序控制,避免出现构建依赖混乱导致构建失败的情况。
语法:在父工程中指定下指定统一管理哪些子工程的artifactId
效果:通过触发父工程构建命令、引发所有子模块构建,产生反应堆!如不聚合那么就没有这样的效果!

五、完整的项目构建流程

创建父项目
创建子module:2个打包方式为war,1个不指定(默认为jar)用来给另外两个依赖
子工程之间的依赖关系:通过引用实现,无法直接引用,需要放到本地仓库/私服中(install)。另外2个工程引用就写这个gav属性即可

六、Maven核心掌握总结

maven核心总结

  • 27
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值