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>

  1. 父工程依赖统一管理

父工程声明版本

<!-- 使用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>

相关推荐
老华带你飞2 分钟前
动漫资讯|基于Springboot的动漫交流网站设计与实现(源码+数据库+文档)
java·数据库·spring boot·后端·论文·毕设·国产动漫网站
rengang665 分钟前
105-Spring AI Alibaba Module RAG 使用示例
java·人工智能·spring·rag·spring ai·ai应用编程
JIngJaneIL6 分钟前
机器人信息|基于Springboot的机器人门户展示系统设计与实现(源码+数据库+文档)
java·数据库·spring boot·机器人·论文·毕设·机器人门户展示系统
鬼火儿27 分钟前
15.<Spring Boot 日志>
java·后端
Mos_x28 分钟前
SpringBoot】Spring Boot 项目的打包配置
java·后端
qianbailiulimeng31 分钟前
【Spring Boot】Spring Boot解决循环依赖
java·后端
何中应31 分钟前
Spring Boot解决循环依赖的几种办法
java·spring boot·后端
donotshow32 分钟前
SpringBoot】Spring Boot 项目的打包配置
java·后端
鬼火儿33 分钟前
Spring Boot 整合 ShedLock 处理定时任务重复
java·后端
王元_SmallA35 分钟前
【Spring Boot】Spring Boot解决循环依赖
java·后端