如何强制mvn重新下载快照

时间:2018-09-02 23:57:52

标签: maven jenkins dependencies updates

我有一个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本地后,它可以正常工作-再次使用更新的内容从articleory.company.com下载了arty。

2)arty软件包的本地构建,因此已在本地存储库中对其进行了更新。重建myApp本地后,它运行良好。

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

现在该怎么办才能解决我的问题?
我不能依靠首先构建org.group.dep.arty,因为我不确定Jenkins是否使用相同的本地存储库在同一主机上运行这两个作业(我不想更改它)。 在我手动清除了该Jenkins节点上的存储库中的org.group.dep.arty并比myApp-job正常运行后,myApp-Jobs以某种方式失败了(以某种方式未下载软件包)。

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

2 个答案:

答案 0 :(得分:1)

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

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

如果有一个具体的问题与具体的依赖关系,请考虑使用mvn dependency:getget的这个maven-dependency-plugin目标是从远程存储库下载一个特定的工件

Here is a link to the plugin documentation

答案 1 :(得分:1)

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

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