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

相关推荐
Cyanto10 小时前
什么是Maven
maven
天草二十六_简村人11 小时前
Macbook IntelliJ IDEA终端无法运行mvn命令
java·jdk·maven·intellij-idea
众乐乐_20081 天前
Maven中的(五种常用依赖范围)
java·maven
小尹哥-程序员1 天前
springboot2.X创建maven多模块工程
java·maven
王者鳜錸1 天前
2024从Maven-MySQL-Nginx部署
mysql·nginx·maven
forestsea2 天前
Maven 依赖坐标与BOM统一管理
java·maven
silence2502 天前
Maven 项目中引入本地 JAR 包
java·maven·jar
艾文伯特2 天前
Maven集成模块打包&使用
java·maven
hnsqls2 天前
删除不了jar包-maven clean package失败
maven·jar