我有一个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版本,并得到了相同的结果。
有没有办法强制更新快照版本?
答案 0 :(得分:1)
这个“另一个项目”是同一多模块项目的一部分吗?
如果是这样,您可以使用--also-make
选项来构建项目,以便maven有效地重建模块及其所有依赖项
如果它是一个完全不同的项目,请使用mvn -U
强制下载项目的快照依赖项。所有。
如果有一个具体的问题与具体的依赖关系,请考虑使用mvn dependency:get
。 get
的这个maven-dependency-plugin
目标是从远程存储库下载一个特定的工件
答案 1 :(得分:1)
重新下载-SNAPSHOT
的最简单解决方案是使用命令行选项:-U
或使用长选项--update-snapshots
此外,您的项目听起来像需要防止这种问题的多模块构建。或者,您可能需要根据彼此定义这些作业(如果在Jenkins中更新了SNAPSHOT,则可以选择构建)。