在处理几个内部库中的更改时,我决定为版本添加后缀,因此我可以在依赖项中使用修改后的库,而不会在我正在进行的工作中给其他人带来麻烦。 例如:
1.1.0-SNAPSHOT --> 1.1.0-mychange-SNAPSHOT
然而,它引起了一些问题,因为版本1.1.0-mychange
的快照仍然被视为版本1.1.0
的最新快照,它打破了我们的一些版本(并且其他人花了一些时间来注意导致问题的原因)。
当然我可以简单地使用1.2.0-SNAPSHOT
- 但如果有人会提出相同的想法呢? (也改变是1.1.0
的候选人,所以把它放在更高的版本没有多大意义)
问题:是否有更好的方法来创建单独的快照线,这种方式可以保护其他人不会意外使用我的快照?
在您的情况下,您正在处理同一个库的分支(或一般的不同代码库),然后将其合并(可能在某些时候,基于某些条件),因此您应该保持相同的版本控制。因此,合理的方法是使用Maven classifier。
使用分类器,您将具有以下优势:
classifier
元素)或通过下面介绍的方法,消费者将能够轻松地从一个依赖关系切换到另一个依赖关系。所以对于依赖:
<dependency>
<groupId>com.sample</groupId>
<artifactId>test</artifactId>
<version>0.0.1-SNAPSHOT</version>
</dependency>
你可以有:
<dependency>
<groupId>com.sample</groupId>
<artifactId>test</artifactId>
<version>0.0.1-SNAPSHOT</version>
<classifier>featureA</classifier>
</dependency>
然后,消费者可以简单地决定在需要时声明或手动更改/更新哪个依赖项。或者,他们也可以应用以下方法轻松地仔细检查(编译/测试)您正在处理的依赖项:
<properties>
<dep.classifier></dep.classifier>
</properties>
<profiles>
<profile>
<id>test-classifier</id>
<properties>
<dep.classifier>featureA</dep.classifier>
</properties>
</profile>
</profiles>
<dependencies>
<dependency>
<groupId>com.sample</groupId>
<artifactId>test</artifactId>
<version>0.0.1-SNAPSHOT</version>
<classifier>${dep.classifier}</classifier>
</dependency>
</dependencies>
我们在这做什么:
dep.classifier
属性(样本名称)然后,默认构建通常会使用标准依赖项,同时运行:
mvn clean install -Ptest-classifier
要么
mvn clean install -Ddep.classifier=featureA
构建将改为使用您的依赖项(假设它在相关存储库中可用),使消费者能够在开发分支/版本/功能之间轻松切换(和测试)。我刚刚测试了这种方法并且工作正常。