【最佳实践】 - Maven

7 篇文章 0 订阅
2 篇文章 0 订阅

概述

本文介绍如何玩转 Maven, 可以说是 Maven 库的使用规范

一、release库(发布库)使用规则及场景

release库是存放稳定版本包的仓库,线上发布的程序都应从release库中引用正确版本进行使用

私服中release库使用规则如下:

  • release库不允许删除jar;
  • release库不允许同版本更新jar包(即同一个版本jar包只存在一个);
  • release库上传的jar包版本号(version)不能以“-SNAPSHOT”结束(版本号中的SNAPSHOT是release版和snapshot版区别的唯一标识);
  • 第三方包(非公司内部开发)仅可引用release版
  • 如可能,请提供接口对应源码,方便引用方使用

release库使用场景:

根据上述release库的使用规则可知,若在开发过程中引用的不是release版的库,很有可能因为jar包更新后引用方不知道而引起代码错误,所以在如下场景场景中,请使用release仓库:

上传/发布:
  • 当代码构建出的jar需要给其他程序提供服务时;当第三方提供的jar包或其他类型的依赖包不在远程中央仓库中时;请将正式发布版的jar用命令deploy或者在web端手动上传至私服对应的release仓库。
  • 如果是jar包提供方,请在代码变动时及时更新私服中对应的jar包版本,并联系管理员将淘汰jar包下线,以免引起引用事故;并及时更新发布包releasenotes(推荐在WIKI中维护),使引用方及时获取版本更新信息。
下载/依赖:
  • 当代码需要使用第三方包时,除非对方代码仍在开发过程中,否则请选择三方包的正式release(发布)版本
  • 如提供方是公司内部其他系统,并且该系统未提供release版本包,请主动要求该系统负责人提供release版本包,以保证开发代码版本稳定,并且关注该包的版本升级情况

二、snapshot库(快照库)使用使用规则及场景

snapshot库是存放中间版本包的仓库,代表该库中jar包的程序处于不稳定状态。当代码在开发过程中有其他程序需要引用时,可以提供snapshot版jar包用于调试和测试。由于snapshot库的包依然处于测试状态,所以随时可以上传同版本最新包来替换旧包,基于这种不稳定状态,maven允许snapshot库中的包被编译时随时更新最新版,这就可能会导致每次打包编译时同一个版本jar会包含不同的内容,所以snapshot库中的包是不能用来发布的。

私服中snapshot库使用规则如下:

  • 快照库可以删除jar
  • 快照库可以同版本更新jar包
  • 第三方包(非公司内部开发)不允许引用快照版
  • 快照库仅可用来联调测试环节使用,不建议用于线上的稳定发布版本
  • 快照库上传的jar包版本号(version)必须以“-SNAPSHOT”结束,并上传至私服后系统将自动将“-SNAPSHOT”替换为时间戳串(本地代码引用时依然用“-SNAPSHOT”结束的版本号,无需替换时间戳),一个快照包线上将存在至少两个版本

snapshot库使用场景:

根据上述snapshot库的使用规则可知,snapshot版的包仅供中间过程以供临时引用,若在最终发布过程中引用,很有可能因为jar包被更新或者未更新而引用方不知道而引起代码错误,所以请仅在如下场景场景中使用snapshot仓库:

上传/发布:
  • 开发中的代码构建出的jar需要给其他程序提供服务时,请将snapshot版的jar用命令deploy或者在web端手动上传至私服对应的snapshot仓库。
下载/依赖:
  • 当代码需要使用其他开发过程中代码的jar包时,请依赖该包的snapshot(快照)版本。maven类型工程使用过程中请使用“-U”强制更新命令,来获取最新版本包。

三、常见问题

① 上传jar包后,编译时发现代码找parent包,但是私服找不到jar,而且代码中也不需要这个parent

原因: 问题多发于web端上传jar包时,自动生成pom.xml 文件中自带节点
解决: 用web端上传时,请注意自行删除节点配置。

② 下载不了最新snapshot版本的jar包

原因: 发布snapshot版本未连同对应的pom一起发布,只有jar包,没有pom,在maven编译时候会直接报错pom找不到,或者因jar包未更新编译报错。
解决: 重新连同jar包一起发布即可解决。

③ 译后jar包变多或变少

原因: 编译环境中传递依赖引用的快照包版本低,引用了错误版本的包进入代码。
解决:

  1. 使用如下命令,检查依赖树,确定是哪个包引用到错的版本:mvn dependency:tree
  2. 清除编译环境未更新的错误包,重新编译。

666 彩蛋

刚开始写博客, 希望大家支持, 如果有没疑问或不清楚的地方可以留言噢!

下周再见~

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值