首页 文章

如何使用远程存储库中的新工件更新maven本地存储库?

提问于
浏览
12

我的maven模块A依赖于其他人提供的另一个maven模块B.当我第一次在A下运行“mvn install”时,maven将B-1.0.jar从远程存储库下载到我的本地maven存储库 . 我的模块A构建良好 .

与此同时,其他人正在将更新的B-1.0.jar部署到远程存储库 . 当我再次在A下运行“mvn install”时,maven不会将较新的B-1.0.jar从远程存储库下载到我的本地存储库 . 因此,由于B-1.0.jar中的API更改,我的模块A构建失败 .

我可以从我的本地存储库手动删除B-1.0.jar . 然后当我运行“mvn install”时,maven会从远程存储库下载最新的B-1.0.jar .

我的问题是如何自动让maven从远程存储库下载最新的工件 . 我试图将updatePolicy设置为“always” . 但那并没有成功 .

2 回答

  • 2

    Maven永远不会重新下载版本 - 1.0被认为是最终版本,新版本应该使用新版本 .

    如果模块B仍处于开发阶段,则应使用版本1.0-SNAPSHOT - 快照是一个特殊的Maven版本,它将检查更新,并在部署时与时间戳和内部版本号一起存储以进行跟踪 .

  • 28

    我同意上面的Brett:新版本应该使用新版本 . 对于您的情况,快照可能是最好的解决方案,但其他可能也有帮助的是使用dependency version ranges .

    从而你可以指定一个版本
    (1.0,)
    声明您接受任何大于1.0的版本 .
    要么
    [1.1.1,1.1.7]
    接受(包括)版本1.1.1和1.1.7之间的任何内容 .
    符号遵循标准数学区间语法,其中

    [=包含在间隔中
    (=从区间排除

    (在学校里,我总是把方括号视为“持有”那个元素,而更柔和的括号“放手”)

    这在依赖性仍处于频繁开发状态且您不希望依赖可能不太稳定且更有可能破坏代码的新快照的情况下非常有用 . 您可以指定安全范围并根据需要随时向上或向下调整边界

相关问题