2017-09-19 51 views
1

在我们的项目中,我们将项目二进制文件的快照部署到tomcat/lib目录。一般来说,POM其提到是否应将SNAPSHOT版本部署到QA和产品

<version>0.2.22-SNAPSHOT</version> 

,并部署到QA jar文件的/ dev环境是

my-project-0.2.22-SNAPSHOT.jar 

我们正面临着一些一致性问题,如建立准确没有发生,一些代码反映,有些不是后构建,有时它合并的旧+新代码。

我的问题是,这样的问题是否可能是因为我们正在环境中部署快照版本?这也是将快照部署到环境中的好习惯吗?

谢谢

+0

对此的简单回答:永远不要把SNAPSHOT放到质量检查中,也不要放在PROD上......如果达到了交付给其他人而不是开发人员发布的要求... – khmarbaise

回答

0

按照惯例,快照版本是未发布的版本。这个想法是,在发布之前我们有一个SNAPSHOT,这个SNAPSHOT代表什么可能成为一个发布。

这里的一个具体的例子:

  • T1:启动dev的周期为释放1.0
  • T2:部署和测试该第一1.0-快照
  • T3:部署和测试该第二1.0-快照
  • T4:部署和测试第三个1.0-SNAPSHOT
  • T5:在1.0-SN上取消注销APSHOT
  • T6:分支,更新版本到1.0
  • T7:部署1.0正式版
  • T8:开始发布1.1
  • 的开发周期......重复

这是,当然,一个简化但关键点是坚实的,即;

  • 存在之前的任何版本有该版本的快照版本
  • 一个版本X的快照版本基本上意味着a developemnt version of X
  • 随着开发周期的进行快照版本应该得到越来越接近最终RELEASE版本
  • 通常,SNAPSHOT版本只在开发过程中存在,RELEASE版本不应该对SNAPSHOT有任何依赖关系。
  • 可以更新SNAPSHOT版本,而RELEASE版本是不可变的。因此,今天下载1.0-SNAPSHOT可以为您提供一个不同的文件,以便您在昨天下载1.0-SNAPSHOT时获得的文件。在Maven下面偷窥一下;当您安装或部署一个1.0-SNAPSHOT时,Maven会将该版本扩展为1.0-yyyMMdd-HHmmSS-i,从而创建一个时间戳特定版本1.0-SNAPSHOT。根据何时解决该依赖关系,您可能会获得不同版本的1.0-SNAPSHOT。您可以控制Maven在存储库配置上使用updatePolicy解决SNAPSHOT依赖性的方式,但中心点仍然存在;你永远不可能是某些当你依赖SNAPSHOT版本时,你会得到什么版本。这在开发中很好(实际上它通常是开发中期望的行为),但是这种缺乏再现性在PROD中是危险的。

我觉得上面应该有助于解释为什么您遇到这些问题:

我们正面临着一些一致性的问题,来样订做没有发生准确,一些代码反映,有些不是建立

一般而言,SNAPSHOTs只能在DEV中使用。在正式的测试环境(如质量保证)和绝对在PROD你不应该部署或依靠SNAPSHOT版本。

需要站在构建的基础上,能够准确地说出其中的内容对于PROD和正式测试evns和发布版本(因为它们是不可变的意图)至关重要,旨在让您相信什么是在你的构建中是你打算在你的构建中。