【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 将根据项目的版本号自动选择正确的仓库进行部署。

相关推荐
大傻^3 小时前
Spring AI Alibaba 项目初始化:Maven依赖与YAML配置全解析
人工智能·spring·maven·springai·springaialibaba·评估框架
柠檬Leade8 小时前
IDEA中 java: 程序包lombok不存在 问题解决
java·开发语言·maven·intellij-idea·依赖不存在
非凡的小笨鱼8 小时前
IDEA找不到类编译不通过的解决方案
java·maven·intellij-idea
番茄去哪了9 小时前
从0到1独立开发一个论坛项目(一)
java·数据库·oracle·maven
攒了一袋星辰1 天前
SequenceGenerator高并发有序顺序号生成中间件 - 架构设计文档
java·后端·spring·中间件·架构·kafka·maven
spencer_tseng1 天前
ojdbc6-1.0.0.jar xmlworker-1.0.0.jar
java·maven·jar
朱一头zcy1 天前
[IDEA不同版本中]配置完Maven后 重启/导入新项目就恢复默认配置(C盘.m2)的解决方案
经验分享·maven·intellij-idea
麦麦鸡腿堡1 天前
JavaWeb_maven
java·开发语言·maven
不吃香菜学java2 天前
苍穹外卖-新增菜品需求分析
java·spring boot·spring·tomcat·maven·ssm