【Maven】Maven的快照库和发行库

1、分类

Maven 支持两种类型的仓库:快照库(Snapshot Repository)和发行库(Release Repository),用于存储不同性质的构件(Artifacts)。

(1) 快照库 (Snapshot Repository):

  • 用途:快照库主要用于存储开发过程中的不稳定版本,这些版本是开发者在开发过程中频繁更新的版本。
  • 特点:
    • 版本号以 -SNAPSHOT 结尾,例如 1.0-SNAPSHOT。
    • 每当源代码发生变化并构建时,即使版本号没有改变,Maven 也会尝试从远程快照库下载最新的快照版本。
    • 适合于处于积极开发阶段的项目,允许团队成员共享最新的工作进展而不必每次更改版本号。

(2) 发行库 (Release Repository):

  • 用途:发行库用于存储稳定的发布版本。这些版本已经过测试,并且可以被其他项目作为依赖项安全地引用。
  • 特点:
    • 版本号不包含 -SNAPSHOT,例如 1.0。
    • 一旦发布到发行库中,构件的内容不应该再改变。如果需要修正错误或添加功能,则应发布新版本。
    • 适合于发布的稳定版本,确保用户获得的是经过验证的代码。

2、实战---配置工作

将 jar 包或 war 包安装到本地仓库不需要指定快照库或发行库,因为本地仓库就一个,不区分快照或发行。如果谈到了快照库或发行库,那就是需要将打包好的 jar 包或 war 包等部署到远程仓库或私服。这时候就需要做一些配置了。

(1) 在pom文件中配置仓库

要在 Maven 项目中配置快照库和发行库,需要编辑项目的 pom.xml 文件,在 <distributionManagement> 元素内定义仓库的信息:

xml 复制代码
<distributionManagement>
    <repository> <!-- 发行库 -->
        <id>releases</id>
        <name>User Project Release</name>
        <url>http://example.com/maven/releases</url>
    </repository>
    
    <snapshotRepository> <!-- 快照库 -->
        <id>snapshots</id>
        <name>User Project Snapshots</name>
        <url>http://example.com/maven/snapshots</url>
    </snapshotRepository>
</distributionManagement>

说明:

  • id 标签是快照库或发行库的唯一标识。在私服或远程仓库中创建快照库或发行库时指定需要指定一个 id,然后在本地 settings.xml 文件中指定(后面会讲到)。
  • url 是私服或远程仓库的地址。

2、在本地配置文件配置远程仓库的信息

如果想要将构件部署到私有仓库(如 Nexus),还需要在 ~/.m2/settings.xml 文件中配置服务器认证信息:

xml 复制代码
<servers>
    <server>
        <id>releases</id> <!-- 发行库 -->
        <username>yourUsername</username>
        <password>yourPassword</password>
    </server>
    
    <server>
        <id>snapshots</id> <!-- 快照库 -->
        <username>yourUsername</username>
        <password>yourPassword</password>
    </server>
</servers>

说明:

  • id 标签必须和私服或远程仓库中指定的 id 相同。
  • username 和 password 是登陆访问私服或远程仓库的凭证。

私服搭建和部署可以参考:https://blog.csdn.net/m0_46308522/article/details/144118804?spm=1001.2014.3001.5502

确保 pom.xml 中声明的仓库 id 与配置文件的 元素匹配。这样,当执行 mvn deploy 命令时,Maven 将根据项目的版本号自动选择正确的仓库进行部署。

相关推荐
myrh pdmd1 小时前
maven导入spring框架
数据库·spring·maven
Ruci ALYS7 小时前
SpringBoot Maven快速上手
spring boot·后端·maven
咱那飘逸的长发8 小时前
Trae java项目配置全局maven和jdk
java·python·maven
FQNmxDG4S1 天前
Maven依赖管理:版本冲突解决与生命周期控制
java·数据库·maven
傻瓜搬砖人1 天前
Spring集成Web环境
java·spring·maven
likerhood2 天前
SLF4J: Failed to load class “StaticLoggerBinder“ 解决
java·log4j·maven
Dylan的码园2 天前
Maven基础架构与整体认识
java·junit·maven
空中海3 天前
第二章:Maven进阶篇 — 依赖管理与构建生命周期
java·maven
空中海3 天前
第三章:Maven高级篇 — 插件开发与多模块工程
java·maven
lst04263 天前
Maven 构建命令
java·maven