news 2026/7/21 16:38:44

Java26:MAVEN

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Java26:MAVEN


一.介绍:
maven是一款为java项目构建管理,依赖管理的工具,使用maven可以自动话构建 ,测试 ,打包
和发布项目,大大提高了开发效率和质量

二.安装和配置

下载地址:https://maven.apache.org/download.cgi
历史版本下载:Other Releases - Maven 3 archives
配置变量:MAVEN-HOME :安装地址
path:%MAVEN-HOME%\bin
测试地址:mvn -v

settings.xml 配置:

配置本地仓库:
<localRepository>D:\java\maven\repository</localRepository>

配置中央仓库的阿里镜像:
<mirror>
<id>alimaven</id>
<name>aliyun maven</name>
<url>http://maven.aliyun.com/nexus/content/groups/public/</url>
<mirrorOf>central</mirrorOf>
</mirror>

配置jdk版本:
<profile>
<id>jdk-17</id>
<activation>
<activeByDefault>true</activeByDefault>
<jdk>17</jdk>
</activation>
<properties>
<maven.compiler.source>17</maven.compiler.source>
<maven.compiler.target>17</maven.compiler.target>
<maven.compiler.compilerVersion>17</maven.compiler.compilerVersion>
</properties>
</profile>


配置idea工具的maven
File-settings-Build,Execution,Deployment-Build Tools-Manven 路径下:
Maven home path 选择maven安装目录


三.maven定位属性
maven工程相对之前的工程,多出一组gavp属性
maven 中的gavp中GroupID,artfactID, VersionID ,Packaging 四个属性

1) GroupID格式:com.{公司/BU}.业务线.{子业务线},最多4级
例如: com.taobao.tddl 或者 com.alibaba.sourcing.multilang
2)ArtfactID 格式: 产品线名-模块名。语义不重复不遗漏
例如:tc-client/uic-api
3)Version 版本号推荐:主版本号.次级版本号.修订号 1.0.0
主版本号:当作了不兼容的api修改,或者增加了能改变产品方向的新功能
次版本号:当作了向下兼容的功能性新增(新增类/接口等)
修订号:修复bug ,没有修改方法签名的功能加强,保持api兼容性。
例如 初始:1.0.0
修改bug:1.0.1
功能调整:1.1.1

packaging 定义规则:

指示将项目打包为什么类型的文件,idea 根据packaging值,识别maven项目类型
packaging 属性为jar(默认值)代表普通的java工程,打包以后就是.jar结尾的文件
packaging 属性为war ,代表java的web工程,打包以后.war结尾的文件
packaging 属性为pom, 代表不会打包,用来做继承的父工程


四.maven 工程快速搭建

1)安装插件:JBLJAVATOWEB

2)创建一个javase maven 工程

3)maven工程 右键 jbljavatoweb


五.maven依赖管理及构建命令

1)第三方依赖声明

denpendencies --第三方依赖的集合

dependency 每个依赖项

2)查找第三方依赖
mvn 官网:https://mvnrepository.com
maven插件 maven-search
安装插件后 进入 Tools- maven search 输入信息 即可

扩展:
1.提取版本号,统一管理
2.可选属性scope
scope 引入依赖的作用域
默认 compile main test 打包运行

test test junit@Test
runtime main 不会,test 不会, 打包和运行 Class.forName(com.mysql.cj.jdbc.Driver)
provided main test 打包运行不会 Servlet HttpServlet
总结:如果不熟悉,使用默认值即可,全部生效


3.依赖传递:导入依赖,会自动导入依赖的依赖(compile denpendenices)
简化依赖的导入 确保依赖的版本无冲突
依赖冲突:发现已经存在的依赖 会终止依赖传递,避免 循环依赖和重复依赖的问题!

依赖冲突的解决原则:
第一原则:谁短谁优先!引用的路径长度
A -C -B1.0
F -B 2.0 A C F B 2.0
第二原则:谁上谁优先! denpendencies 声明的先后顺序
A-B1.0
F-B2.0
A-F-B 1.0

4.依赖下载失败解决方法:
1)检查网络连接和Maven仓库服务器状态
2)确保依赖项的版本号与队友的版本号匹配并检查Pom文件依赖是否正确
3) 清楚本地Manven仓库缓存文件lastupdated 并删除,刷新重新下载

5.构建命令

项目构建是指将源代码,依赖库和资源文件等转换为可执行或可部署的应用程序的过程,在这个过程包括
编译源代码,链接依赖库,打包和部署等多个步骤

语法: mvn 构建命令 构建命令

mvn clean 清理编译或打包后的项目结构,删除target文件夹
mvn compile 编译项目,生成target文件
mvn test 执行测试源码(测试)
mvn site 生成一个项目依赖信息的展示界面
mvn package 打包项目, 生成war/jar 文件
mvn install 打包后上传到maven本地仓库(本地部署)
mvn deploy 只打包,上传到maven 私服仓库(私服部署)

注意:
1.命令执行必须要我们进入到项目路径
2.部署必须是jar包形式


构建命令周期:
构建命令周期可以理解成是一组固定构建命令的有序集合,触发周期后的命令,会自动触发周期前的命令
,也是一种简单构建的思路
清理周期:主要对项目编译生成文件进行清理
包含命令:clean

默认周期:定义了真正构建时所需要执行的所有步骤,它是生命周期中最核心的部分
包含命令:compile -test -package -install/deploy
报告周期
包含命令:site
打包:mvn clean package 本地仓库:mvn clean install

最佳使用方案
打包: mvn clean package
重新编译:mvn clean compile
本地部署:mvn clean install

六.继承

1.继承概念:
Maven继承是指在Maven 的项目中,让一个项目从另外一个项目中继承配置信息的机制。
继承可以让我们在多个项目中共享同一配置信息,简化项目的管理和维护工作
2.继承的作用:
作用:在父工程中统一管理项目中的依赖信息,进行统一版本管理
3.继承语法:
父工程
<groupId>org.example</groupId>
<artifactId>maven-shop-parent</artifactId>
<!-- 当前工程为父工程,它要去管理子工程,所以打包方式必须是pom-->
<packaging>pom</packaging>
<version>1.0-SNAPSHOT</version>

子工程
<!-- 使用parent标签指定当前工程的父工程-->
<parent>
<artifactId>maven-shop-parent</artifactId>
<groupId>org.example</groupId>
<version>1.0-SNAPSHOT</version>
</parent>

4. 父工程依赖统一管理
父工程声明版本
<!-- 使用denpendencyManagement标签配置对依赖的管理-->
<!-- 被管理的依赖并没有真正被引入到工程-->
<dependencyManagement>
<dependencies>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-core</artifactId>
<version>2.18.0</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.23</version>
</dependency>

</dependencies>
子工程声明版本
<!-- 子工程引入依赖,不声明版本号,继承父工程的版本号-->
<dependencies>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>

</dependency>
</dependencies>


七.聚合

1.聚合概念
Maven 聚合是指多个项目组织到一个父级项目中,通过触发父工程的构建,统一按顺序触发子工程的
构建的过程
2.聚合作用:
a.统一管理子项目构建,通过聚合,可以将多个子项目组织在一起,方便管理和维护
b.优化构建顺序,通过聚合,可以对多个项目进行顺序控制,避免出现构建依赖混乱导致构建失败的情况

3.聚合语法
父项目中包含子项目列表
<modules>
<module>shop-user</module>
<module>shop-order</module>
</modules>

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/21 16:38:23

10分钟上手Mini-JVM:快速运行你的第一个Java程序 [特殊字符]

10分钟上手Mini-JVM&#xff1a;快速运行你的第一个Java程序 &#x1f680; 【免费下载链接】mini-jvm 使用 JDK8 实现 JVM(Java Virtual Machine) 项目地址: https://gitcode.com/gh_mirrors/mi/mini-jvm 你是否对Java虚拟机(JVM)的内部工作原理感到好奇&#xff1f;想…

作者头像 李华
网站建设 2026/7/21 16:30:53

OAuth-Plugin生成器详解:快速创建OAuth提供者和消费者

OAuth-Plugin生成器详解&#xff1a;快速创建OAuth提供者和消费者 【免费下载链接】oauth-plugin Rails plugin for OAuth 项目地址: https://gitcode.com/gh_mirrors/oa/oauth-plugin OAuth-Plugin是一款专为Rails应用设计的插件&#xff0c;提供了强大的生成器功能&am…

作者头像 李华
网站建设 2026/7/21 16:30:33

揭秘Dyson电池管理系统固件升级:从硬件逆向到智能状态机设计

揭秘Dyson电池管理系统固件升级&#xff1a;从硬件逆向到智能状态机设计 【免费下载链接】FU-Dyson-BMS (Unofficial) Firmware Upgrade for Dyson V6/V7 Vacuum Battery Management System 项目地址: https://gitcode.com/gh_mirrors/fu/FU-Dyson-BMS 你是否曾因Dyson吸…

作者头像 李华