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>

相关推荐
hakesashou几秒前
Python中常用的函数介绍
java·网络·python
佚先森9 分钟前
2024ARM网络验证 支持一键云注入引流弹窗注册机 一键脱壳APP加固搭建程序源码及教程
java·html
古月居GYH23 分钟前
在C++上实现反射用法
java·开发语言·c++
儿时可乖了1 小时前
使用 Java 操作 SQLite 数据库
java·数据库·sqlite
ruleslol1 小时前
java基础概念37:正则表达式2-爬虫
java
xmh-sxh-13141 小时前
jdk各个版本介绍
java
天天扭码2 小时前
五天SpringCloud计划——DAY2之单体架构和微服务架构的选择和转换原则
java·spring cloud·微服务·架构
程序猿进阶2 小时前
堆外内存泄露排查经历
java·jvm·后端·面试·性能优化·oom·内存泄露