【问题标题】:how to force mvn redownload snapshot如何强制 mvn 重新下载快照
【发布时间】:2018-09-03 13:12:08
【问题描述】:

我有一个 maven 项目 (myApp) 取决于快照版本中的另一个 maven 项目。 喜欢:

<dependency>
    <groupId>org.group.dep</groupId>
    <artifactId>arty</artifactId>
    <version>12.1.4-SNAPSHOT</version>
</dependency>

但是在“arty”在没有更改版本的情况下获得更新后,我遇到了这个问题(我知道这将是最干净的解决方案)。 我在本地构建了 myApp 并且仍然获得了旧版本的“arty”依赖项。

我验证了适用于我(和一所大学)的拖车选项:
1)手动清理本地存储库:导航到我的.m2/repo/org/group/dep/arty并删除里面的所有文件夹。在本地重建 myApp 后,它工作正常 - 再次从 artifactory.company.com 下载了带有更新内容的 arty。

2) arty 包的本地构建,因此它在本地存储库中得到更新。重建 myApp 本地后,它工作正常。

但我在 Jenkins 上遇到了类似的问题:
我得到了一份詹金斯的工作,只是在 org.group.dep.arty 之前构建 org.group.myApp 而没有构建。它因缺少“艺术”形式的更改而失败。

我现在可以做些什么来解决我的问题?
我不能依赖第一次构建org.group.dep.arty,因为我不能确定 Jenkins 是否可以使用相同的本地存储库在同一主机上运行这两个作业(我不想改变它)。 在我手动清除该 Jenkins 节点上的 org.group.dep.arty 并运行而不是 myApp-job 之后,myApp-Jobs 以某种方式失败了(不知何故没有下载包)。

我终于找到了mvn -u,但当我尝试这个时,我也很失望。 我在那个詹金斯上尝试了不同的 Maven 版本并得到了相同的结果。 有没有办法强制更新快照版本?

【问题讨论】:

    标签: maven jenkins dependencies updates


    【解决方案1】:

    这个“另一个项目”是同一个多模块项目的一部分吗? 如果是这样,您可以使用 --also-make 选项构建您的项目,以便 maven 有效地重建您的模块及其所有依赖项

    如果是完全不同的项目,请使用mvn -U 强制下载所有项目的快照依赖项。

    如果某个具体依赖项存在特定问题,请考虑使用mvn dependency:getmaven-dependency-plugin 的这个 get 目标从远程存储库下载一个特定的工件

    Here is a link to the plugin documentation

    【讨论】:

    • 它不应该是多模块的一部分(多个模块的一部分,......多年来开发的不幸星座,希望摆脱这个,但其他主题)不幸的是,似乎 - U 参数根本无法正常工作 - 使用它时,我的 Jenkins 上的快照不会更新。也许依赖项:get 会起作用,但我认为这显然会做更多的工作。
    【解决方案2】:

    重新下载-SNAPSHOT最简单的解决方案是使用命令行选项:-U或长选项--update-snapshots

    此外,您的项目听起来需要多模块构建来防止此类问题。或者您可能需要根据彼此定义这些作业(如果在 Jenkins 中更新了 SNAPSHOT,则可以选择构建)。

    【讨论】:

      猜你喜欢
      • 2014-11-16
      • 1970-01-01
      • 2011-08-24
      • 2012-11-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多