Maven pom的distributionManagement配置方式

 更新时间:2025年01月22日 09:36:20   作者:码灵  
文章主要介绍了Maven的distributionManagement配置方式,以及它的作用、配置方法和重要性,distributionManagement用于指定构件的发布位置,包括下载URL、状态等,文章还详细解释了如何配置repository和snapshotRepository,以及它们的用途和区别

Maven pom的distributionManagement配置方式

distributionManagement的作用是"分发构件至远程仓库"。

mvn install 会将项目生成的构件安装到本地Maven仓库,mvn deploy 用来将项目生成的构件分发到远程Maven仓库

本地Maven仓库的构件只能供当前用户使用,在分发到远程Maven仓库之后,所有能访问该仓库的用户都能使用你的构件。

我们需要配置POM的distributionManagement来指定Maven分发构件的位置。

<distributionManagement>的作用:负责管理构件的发布。这是一个环境变量。

1.构件的发布

Maven项目的POM中,环境配置<distributionManagement>负责管理构件的发布。

<distributionManagement> 
  ... 
  <downloadUrl>http://jcat.ericsson.org/my-project</downloadUrl> 
  <status>deployed</status>  
</distributionManagement>

<downloadUrl> URL </downloadUrl> 其它的Maven项目可以通过该URL下载并引用当前Maven项目的构件。

<status> 当前Maven项目的状态。

可用的状态有以下几种:

  • none:未指明状态,默认值
  • converted:该Maven项目的构件已经被转换为兼容Maven 2
  • partner:该Maven项目的构件保持与另一个库的Maven版本一致
  • deployed:该Maven项目的构件是通过Maven 2或Maven 3发布的,最常用的值
  • verified:该Maven项目的构件已经被验证过

2.推送仓库设置(常用)

2.1 <distributionManagement>中的<repository> <snapshotRepository>

<distributionManagement> 

  <repository> 
    <uniqueVersion>false</uniqueVersion> 
    <id>corp1</id> 
    <name>Corporate Repository</name> 
    <url>scp://repo/maven2</url> 
    <layout>default</layout> 
  </repository> 

  <snapshotRepository> 
    <uniqueVersion>true</uniqueVersion> 
    <id>propSnap</id> 
    <name>Propellors Snapshots</name> 
    <url>sftp://propellers.net/maven</url> 
    <layout>legacy</layout> 
  </snapshotRepository> 
  ... 

</distributionManagement>
  • <uniqueVersion>指定是否产生一个唯一性的version number还是使用address里的其中version部分.(true or false)
  • <id> 库的id
  • <name> 库的名称
  • <url> 库的url
  • <layout> default或者legacy

2.2 <distributionManagement> 中的 <repository> 和 <snapshotsrepository>各自的含义

maven仓库分为两种 release发布仓库(<repository>) 和 snapshot快照仓库(<snapshotsrepository>)。

  • snapshot快照仓库用于保存开发过程中的不稳定版本。
  • release正式仓库用来保存稳定的发行版本。

定义一个组件/模块为快照版本 只需要在pom文件中的该模板的版本号后面加上 -SNAPSHOT就可以了。 注意:必须是大写。

maven会根据模块的版本号(pom文件中的<version>版本号</version>)中是否带有-SNAPSHOT来判断这个是快照版本还是正式版本。

如果是快照版本:

  • 在mvn deploy时会自动发布到快照版本库中。
  • 而使用快照版本的模块,在不更改版本号的情况下,直接编译打包时,maven会自动从镜像服务器上下载最新的快照版本。

如果是正式发布版本:

  • 那么在mvn deploy时会自动发布到正式版本库中。
  • 而使用正式版本的模块,在不更改版本号的情况下,编译打包时,如果本地已经存在该版本的模块则使用本地的而不是主动去镜像服务器上下载。

3.部署网站和文档

<distributionManagement>的<site>配置,除了部署当前Maven项目的构件,还可以部署当前Maven项目的网站和文档。

示例如下:

<distributionManagement> 

  ... 
  <site> 
    <id>mojo.website</id> 
    <name>Mojo Website</name> 
    <url>scp://beaver.codehaus.org/home/projects/mojo/public_html/</url> 
  </site> 
  ... 

</distributionManagement>

4.重命名构件

随着一个Maven项目的发展壮大,该Maven项目的构件可能需要重新发布到新的库。

<relocation>可以将当前Maven项目以新的构件的形式发布到另一个库。

<distributionManagement> 

  ... 
  <relocation> 
    <groupId>org.apache</groupId> 
    <artifactId>my-project</artifactId> 
    <version>1.0</version> 
    <message>We have moved the Project under Apache</message> 
  </relocation> 
  ... 

</distributionManagement>

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • 解决java.lang.ClassCastException的java类型转换异常的问题

    解决java.lang.ClassCastException的java类型转换异常的问题

    这篇文章主要介绍了解决java.lang.ClassCastException的java类型转换异常的问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-09-09
  • Spring Cloud Gateway入门解读

    Spring Cloud Gateway入门解读

    本篇文章主要介绍了Spring Cloud Gateway入门解读,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-04-04
  • SpringBoot整合Mybatis-plus的具体过程使用

    SpringBoot整合Mybatis-plus的具体过程使用

    这篇文章主要介绍了SpringBoot 整合mybatis+mybatis-plus的步骤,本文通过图文并茂的形式给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-06-06
  • SpringCloud微服务调用丢失请求头的问题及解决方案

    SpringCloud微服务调用丢失请求头的问题及解决方案

    在Spring Cloud 中微服务之间的调用会用到Feign,但是在默认情况下,Feign 调用远程服务存在Header请求头丢失问题,下面给大家分享SpringCloud微服务调用丢失请求头的问题及解决方案,感兴趣的朋友一起看看吧
    2024-02-02
  • 详解SpringBoot自动配置源码

    详解SpringBoot自动配置源码

    今天带大家来分析SpringBoot自动配置源码,文中有非常详细的代码示例,对正在学习java的小伙伴们很有帮助,需要的朋友可以参考下
    2021-06-06
  • 在IDEA中创建父工程和子模块module的方法步骤

    在IDEA中创建父工程和子模块module的方法步骤

    这篇文章主要介绍了在IDEA中创建父工程和子模块module的方法步骤,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2019-02-02
  • 基于Springboot+Vue实现的在线答题闯关系统全过程

    基于Springboot+Vue实现的在线答题闯关系统全过程

    这篇文章主要介绍了基于Springboot+Vue实现的在线答题闯关系统的相关资料,文中包括前端Vue.js、后端SpringBoot及MySQL数据库的使用,系统功能涵盖顺序出题、体型练习、随机出题、错题本、收藏题和答题统计等,需要的朋友可以参考下
    2024-12-12
  • Spring的Eureka续约(心跳检测)详解

    Spring的Eureka续约(心跳检测)详解

    这篇文章主要介绍了Spring的Eureka续约(心跳检测)详解,eureka client每隔一定的时间,会给eureka server发送心跳,保持心跳,让eureka server知道自己还活着,需要的朋友可以参考下
    2023-11-11
  • Java中Socket用法详解

    Java中Socket用法详解

    本文详细讲解了Java中Socket的用法,文中通过示例代码介绍的非常详细。对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-12-12
  • Spring Boot集成教程之异步调用Async

    Spring Boot集成教程之异步调用Async

    在项目中,当访问其他人的接口较慢或者做耗时任务时,不想程序一直卡在耗时任务上,想程序能够并行执行,我们可以使用多线程来并行的处理任务,也可以使用spring提供的异步处理方式@Async。需要的朋友们下面来一起看看吧。
    2018-03-03

最新评论