2024最新 maven 高级用法 (概念自己百度)

#B站看视频学不到的知识#

目录

[maven 定义和概念](#maven 定义和概念)

maven是java构建工具。maven通过远程仓库 获取和更新jar包,通过坐标来管理jar文件。

maven核心配置文件

config目录下settings.xml 文件,核心配置详解:

localRepository 本地仓库地址:

repositories 远程仓库地址()

servers 用来配置远程仓库的登录信息

mirrors 镜像

profiles 节点(通过不同节点配置不同环境 比如 dev sit prod)

idea工具集成maven

复制代码
dependency 依赖错误的问题:

先看本地仓库有没有对应的jar文件,

maven加载包的顺序:

先根据左边去本地仓仓库找,坐标文件夹不存在会自动创建。

本地找不到的情况下回去远程仓库找。

远程仓库找不到的情况下会出现两个 .lastUpdated 文件。

重点,重点,重点: 仓库地址没错,尝试多次任无法下载的时候,需要把.lastUpdated 删掉再进行下载。

这里备上快速删除仓库下所有.lastUpdated 文件的脚本:

复制代码
chcp 65001
@echo off
set REPOSITORY_PATH=E:\maven\repository
for /f "delims=" %%i in ('dir /b /s "%REPOSITORY_PATH%\*lastUpdated*"') do (
    del /s /q %%i
)
for /f "delims=" %%i in ('dir /b /s "%REPOSITORY_PATH%\aether-*-in-progress"') do (
    del /s /q %%i
)
for /f "delims=" %%i in ('dir /b /s "%REPOSITORY_PATH%\_remote.repositories"') do (
    del /s /q %%i
)
for /f "delims=" %%i in ('dir /b /s "%REPOSITORY_PATH%\_maven.repositories"') do (
    del /s /q %%i
)
pause

maven依赖传递

maven远程仓库和私服

常见的远程/中央仓库:

maven官方仓库

  1. http://mvnrepository.com/

    1. http://repo1.maven.org/maven2

阿里云仓库:云效-Maven公共仓库

https://maven.aliyun.com/nexus/content/groups/public

私服就是自己搭一个仓库服务 nexus。

jar包定义的一些规范:

2.1 groupId命名规范

含义解读:groupId定义了项目所在的组,组通常和该项目所在的公司和组织有关。

格式规范:

格式一:域名.项目隶属的组织名(公司名)

格式二:域名.项目隶属的组织名(公司名).项目名称(部门名)

2.2 artifactId命名规范

含义解读:artifactId用来标识项目的名称,不要带version等无关信息。

格式规范:使用小写字母准确描述,单词之间可以-进行分割。

命名示例:apache公司的tomcat项目中,artifactId是tomcat;再如常用构件spring-beans。

2.3 version命名规范

含义解读:项目当前的版本。

格式规范:建议jar包版本采用三位数字来标识,即主版本号.次版本号.修订号------major.minor.revison 。

注意事项:

  • 每位从0依次到 99,尽量不要跳跃,数字不可超过 99。
  • 项目初始版本可以为 0.1.0,也可以为1.0.0,开发人员可灵活处理。比如"1.0.0-SNAPSHOT",其中SNAPSHOT的意思是"快照",说明该项目处于开发中,是不稳定的版本。

2.4发布规范

线下环境发布jar包要使用SNAPSHOT版本(便于修改),线上必须用release版本。 若正式环境中允许依赖snapshot版本。今天依赖某个snapshot版本的第三方库成功构建了,明天再构建时可能就会失败,因为第三方可能已经更新了它的snapshot库。再次构建时,Maven会去远程repository下载snapshot的最新版本,构建的成功性就很难保证了。

SNAPSHOT版本可以由开发分支发布,release版本必须由指定的分支发布(比如master分支)。

release版本不允许覆盖升级。如当前版本:1.1.3,必须升级到下一个合理的版本号:1.1.4 或 1.2.0 或 2.0.0才能发布成功。

本地仅可install jar包到本地仓库,禁止deploy jar包到远程仓库;远程仓库必须通过公司指定的平台才可以发布。这样的规定能带来很多益处。首先,可避免没有提交的代码被打包到远程仓库;其次,通过平台可以在发布jar包的过程中对代码进行扫描、发布成功后发布通知等,这些功能在本地环境是无法实现的。

环境隔离。线上私服和线下私服隔离;线下不同的环境对应的私服也要隔离;环境隔离可避免不同环境之间的jar包互相影响,有利于并行开发和并行测试;通常私服之间可能存在代理关系,当对应的私服拉取不到相关依赖时会从代理出进行拉取;代理关系可提升依赖查找的成功率,但也会使开发环境变的复杂;

发布后维护版本更新历史(ChangeLog或release notes),维护的主要内容有:版本说明、概要,版本的主要Changes,修复的Issues/Bugs,发布时间等。

相关推荐
缺点内向3 小时前
Java:创建、读取或更新 Excel 文档
java·excel
带刺的坐椅4 小时前
Solon v3.4.7, v3.5.6, v3.6.1 发布(国产优秀应用开发框架)
java·spring·solon
四谎真好看5 小时前
Java 黑马程序员学习笔记(进阶篇18)
java·笔记·学习·学习笔记
桦说编程5 小时前
深入解析CompletableFuture源码实现(2)———双源输入
java·后端·源码
java_t_t5 小时前
ZIP工具类
java·zip
lang201509286 小时前
Spring Boot优雅关闭全解析
java·spring boot·后端
pengzhuofan6 小时前
第10章 Maven
java·maven
百锦再7 小时前
Vue Scoped样式混淆问题详解与解决方案
java·前端·javascript·数据库·vue.js·学习·.net
刘一说7 小时前
Spring Boot 启动慢?启动过程深度解析与优化策略
java·spring boot·后端
壹佰大多7 小时前
【spring如何扫描一个路径下被注解修饰的类】
java·后端·spring