maven updatePolicy更新策略

背景:java体系,通常公司内部都会通过nexus搭建私有仓库。私有仓库与maven中央仓库不同,1、中央仓库都是deploy 稳定、正式版本的jar包。如果jar包存在重大更新,则通过 update jar包的version,所以项目中的引入中央仓库的jar包,只要version不变化则jar包的内容也不会变化。

2、nexus私有仓库则不同,当java代码变更时,存在不更新maven坐标的version,重新deploy的情况,所以相同的maven坐标在不同的时间点,可能jar包里的内容是变化的。比如公司内部团队A在私有仓库 于2022年10月01日 10:00deploy了  testA,如下坐标。

<groupId>com.test</groupId>

<artifactId>testA</artifactId>

<version>1.0.0-snapshot</version>

2022年10月01日 14:00在 testA项目内,又重新加了一些class变更,又deploy到nexus私有仓库中了。

你所在团队的项目testB,引入了 testA依赖。于10月01日 11:00构建项目时

mvn compile -Dmaven.test.skip=true

此时mvn从私有仓库nexus中将 testA拉到了mvn的localRepository中了。此后只要mvn再构建项目B,项目B所依赖的testA都从localRepository中获取了。即使10月01日 14:00nexus中jar包的内容发生变化了,maven由于从本地仓库获取testA,所以是感知不到testA的变化的。

所以针对私有仓库,通过配置maven的updatePolicy可以强制maven从私有下载最新的jar包。

项目 pom.xml 或者 maven的 settings.xml中配置。

<repositories>
    <repository>
    <id>rdc-releases</id>
        <url>https://xxx/</url>
        <releases>
          <enabled>true</enabled>
          <updatePolicy>always</updatePolicy>
          <!--always、daily、interval、never-->
        </releases>
        <snapshots>
          <enabled>false</enabled>
          <updatePolicy>always</updatePolicy>
        </snapshots>
  </repository>
</repositories>

updatePolicy表示maven从远处仓库检查更新的频率,默认值是daily,表示Maven每天检查一次。其他可用的值包括:never-从不检查更新;always-每次构建都检查更新;interval:X-每隔X分钟检查一次更新。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值