Java 竹子和人工制品之间的语义版本控制?

Java 竹子和人工制品之间的语义版本控制?,java,publish,artifactory,bamboo,semantic-versioning,Java,Publish,Artifactory,Bamboo,Semantic Versioning,我们有一个内部Java库,它是许多其他项目的依赖项,我们称之为ourcommons-.jar。我们或多或少地喜欢以下想法,因此: 当我们进行向后不兼容的API更改时,主要数量更改 当我们进行向后兼容的API更改时,数量会发生微小变化 修补程序编号在我们每次构建时都会发生变化(因此对我们来说,它实际上是一个构建编号);但我们实际上只会在修复一个bug时进行构建,这样它就足够接近真的semver 目前,我们只发布到Artifactory上的快照目录,并在每次构建时覆盖那里的JAR。具体而言,我们

我们有一个内部Java库,它是许多其他项目的依赖项,我们称之为
ourcommons-.jar
。我们或多或少地喜欢以下想法,因此:

  • 当我们进行向后不兼容的API更改时,主要数量更改
  • 当我们进行向后兼容的API更改时,数量会发生微小变化
  • 修补程序编号在我们每次构建时都会发生变化(因此对我们来说,它实际上是一个构建编号);但我们实际上只会在修复一个bug时进行构建,这样它就足够接近真的
    semver
目前,我们只发布到Artifactory上的快照目录,并在每次构建时覆盖那里的JAR。具体而言,我们的项目回购协议位于:

http://arty/artifactory/simple/our-libs-snapshots/our-commons/snapshot
其中
http://arty/artifactory
是在
arty
机器上运行的人工服务,其中
我们的libs快照
是实际回购的名称,其中
我们的commons
是我们的lib的名称。
/snapshot
目录是所有竹子构建发布到的地方,就像我说的,每个构建都覆盖JAR。我们正在对构建进行硬编码,以生成每个构建的
our-commons-0.1-SNAPSHOT.jar

为了完成此发布,我将以下任务配置为
我们的共享空间
的竹计划的一部分:

Artifactory Deploy Task
=======================
Artifactory Serverl URL:        http://arty/artifactory
Target Repository:              our-libs-snapshots
Deployer Username:              myadmin
Deployer Password:              ******
Edit Published Artifacts:       dist/our-commons-0.1-SNAPSHOT.jar=>our-commons/snapshot
Capture & Publish Build Info:   yes (checked)
我想弄清楚如何让竹子和人工制品与我们的semver风味一起工作。这样,我们第一次建造时,它将产生:

http://arty/artifactory/simple/our-libs-snapshots/our-commons/1.0.0/our-commons-1.0.0.jar
http://arty/artifactory/simple/our-libs-snapshots/our-commons/1.0.1/our-commons-1.0.1.jar
我们第二次建造时,它将产生:

http://arty/artifactory/simple/our-libs-snapshots/our-commons/1.0.0/our-commons-1.0.0.jar
http://arty/artifactory/simple/our-libs-snapshots/our-commons/1.0.1/our-commons-1.0.1.jar
然后,我们将能够手动指示何时增加次要编号,在这种情况下,补丁编号将重新开始:

http://arty/artifactory/simple/our-libs-snapshots/our-commons/1.1.0/our-commons-1.1.0.jar
主号码的处理方式相同,但如果增加,则会重置次号码和补丁号码


不确定我们应该在哪里添加这些配置,或者它们实际上是什么样子。有什么想法吗?

你想要实现的就是独特的快照(见下文)。使用的
patch
版本是错误的(补丁版本是第三个数字,例如
10.0.3
3是补丁版本)

在使用Maven(或Gradle,或Ivy)和Artifactory时,您可以使用这个现成的特性。
您需要将Artifactory repository设置为与和一起使用(通常保留3到5个最后的快照是一个很好的做法)。

只是为了好玩,您是否来自node.js/ruby background?:)谢谢@JBaruch(+1)-不,是Java背景。为什么?滥用语义版本控制来实现快照行为对于来自这些bgs的开发人员来说是很自然的事情。谢谢@JBaruch(+1)-您能提供更多细节吗?不确定什么是“补丁版本”,什么是“唯一快照”,以及它们之间的关系。如何为“唯一快照”配置Artifactory?如何“清理”快照?再次感谢!只有当你承诺接受答案时(因为某些原因你没有做的事情)。只是开玩笑。我会在几个小时内更新答案,添加更多细节和链接。添加了澄清链接。