我们目前正在从maven2迁移到maven3。 现在我们在一个共享项目中遇到了maven3的新“SNAPSHOT”策略的问题。 该项目使用过滤器提供不同的配置,为不同的环境(dev,int,production)设置不同的设置,这些设置是分割的分类器。
在我们的Jenkins构建服务器中,在我们的本地公司repo中生成并部署这三个分类器:主要maven目标中的dev,其他作为后续步骤。
在maven2中这没有问题,因为在我们的存储库中部署之后:
使用maven3,我们现在有了这个带时间戳的版本:
现在使用分类器dev或int构建其他项目会中断,因为最新的SNAPSHOT版本是第3版(prod),并且无法从我们的存储库中解析dev和int。
据我所知,不可能告诉maven3在没有时间戳的情况下部署“好老”的SNAPSHOT。是否有解决方案来处理一个maven3调用中的所有配置?或者我们如何将Jenkins配置为“一个SNAPSHOT”?
提前致谢
更新1
如下所示配置Post步骤:
Maven目标:
Maven目标:
答案 0 :(得分:0)
根据我的理解,从Maven 3生成的工件在其名称中带有时间戳,如artifact-1.2.0-20140212.103043-1-dev.jar,这会导致依赖构建失败。
由于您需要Maven 3来生成具有命名约定artifact-1.2.0-SNAPSHOT-dev.jar的工件,这可以通过在相应的POM.xml中使用“finalName”标记来实现,这些标记会生成这些工件。
Controlling maven final name of jar artifact
此致
Jyotsna
答案 1 :(得分:0)
这不符合您的计划。正如您所说,在Maven 3中无法使用非带时间戳的存储库。
您有两种选择:
我强烈推荐解决方案1。