我希望我们的功能测试使用类路径中的快照的时间戳版本(例如api-0.5.0-20110706.191935-1.jar)从Maven运行。但是,虽然我可以看到我们的Artifactory存储库中有时间戳的版本Maven指的是api-0.5.0-SNAPSHOT.jar并从本地存储库中解析它。
背景
我们的持续集成(CI)服务器设置了两个相关的构建。服务器构建运行mvn deploy
,新的快照在正确构建的存储库中出现。
我们还有一个功能测试版本,可以获得最新的正确版本,部署到开发服务器,然后开始针对它运行测试。
似乎正在发生的是功能测试版本依赖于API-0.5.0-SNAPSHOT.jar。当Server构建运行时,它会替换本地存储库中的快照,并且我们开始从功能测试构建中获取NoClassDeFond错误。
因此,我希望功能测试版本使用带时间戳的版本。
我目前了解的选项:
version lock:snapshots
目标将pom中的版本设置为带时间戳的版本。 答案 0 :(得分:1)
以下是简短的回答:不要在CI构建的项目之间使用SNAPSHOT依赖项。它们在本地计算机上运行良好,但CI环境往往效果不佳**。有关SNAPSHOT如何解决的已发布的算法,但它是一团糟。相反,只需使用普通依赖项,并在CI中生成一个发布作业,即生成版本。
换句话说,SNAPSHOTs应该被认为是非确定性的(至少从CI构建代理的角度来看)。
Versions plugin可能有助于跟踪相关性。
**我看到它一致工作的唯一方法是,如果为每个构建代理设置不同的存储库,然后在每次运行之间擦除它。剧烈,可怕,低效和不必要。