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继承的问题引导和测试代码

    Java继承的问题引导和测试代码

    这篇文章主要介绍了Java继承的问题引导和测试代码,涉及继承的概念,合成的语法等相关内容,具有一定借鉴价值,需要的朋友可以参考下。
    2021-08-08
  • 解析Java中的默认方法

    解析Java中的默认方法

    这篇文章主要介绍了Java中的默认方法,包括继承和调用等Java入门学习中的基础知识,需要的朋友可以参考下
    2015-07-07
  • Java 如何读取Excel格式xls、xlsx数据工具类

    Java 如何读取Excel格式xls、xlsx数据工具类

    这篇文章主要介绍了Java 如何读取Excel格式xls、xlsx数据工具类的操作,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-09-09
  • 解决feign微服务间的文件上传报错问题

    解决feign微服务间的文件上传报错问题

    这篇文章主要介绍了解决feign微服务间的文件上传报错问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-06-06
  • 详谈spring中bean注入无效和new创建对象的区别

    详谈spring中bean注入无效和new创建对象的区别

    这篇文章主要介绍了spring中bean注入无效和new创建对象的区别,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-02-02
  • 浅析如何在SpringBoot中实现数据脱敏

    浅析如何在SpringBoot中实现数据脱敏

    脱敏是指在不改变原数据结构的前提下,通过某种方式处理数据,使数据不能直接暴露用户的真实信息,下面我们就来看看SpringBoot中实现数据脱敏的具体方法吧
    2024-03-03
  • 剑指Offer之Java算法习题精讲数组与字符和等差数列

    剑指Offer之Java算法习题精讲数组与字符和等差数列

    跟着思路走,之后从简单题入手,反复去看,做过之后可能会忘记,之后再做一次,记不住就反复做,反复寻求思路和规律,慢慢积累就会发现质的变化
    2022-03-03
  • Java面向对象之包装类的用途与实际使用

    Java面向对象之包装类的用途与实际使用

    所谓包装类,就是能够直接将简单类型的变量表示为一个类,在执行变量类型的相互转换时,我们会大量使用这些包装类,本文我们来深入探索一下Java包装类的相关内容,需要的朋友可以参考下
    2022-03-03
  • Spring Boot对Future模式的支持详解

    Spring Boot对Future模式的支持详解

    这篇文章主要给大家介绍了关于Spring Boot对Future模式的支持的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用spring boot具有一定的参考学习价值,需要的朋友们下面来一起看看吧
    2019-01-01
  • Java中减少if-else的几种方式

    Java中减少if-else的几种方式

    if判断语句是很多编程语言的重要组成部分,但是,若我们最终编写了大量嵌套的if语句,这将使得我们的代码更加复杂和难以维护,本文主要介绍了Java中减少if-else的几种方式,具有一定的参考价值,感兴趣的可以了解一下
    2024-01-01

最新评论