当某些方法有 @deprecated 注释时,我正在考虑管理项目中包版本控制的最佳方法。我们正在使用 maven-bundle-plugin,它可以从 packageinfo 文件中获取包版本,或者如果没有文件,则从包版本中获取。
我们遵循关于软件包的约定:(“X.Y.Z”),其中当有错误修复时 Z 不断增长,当有新功能时 Y 不断增长,当不兼容时 X 不断增长。
假设我们有版本为(“1.0.0”)的软件包 P。在 P 中有两个类 Foo 和 Bar。如果我们在 Foo 中有两个方法 - A() 和 B(),并且我们已经弃用了方法 A(),那么这些都是 Hole 包中的更改。软件包版本如何变化?
最佳答案
我将通过正确的 OSGi 名称来引用这些版本段:Major(您的 X)、Minor(Y)和 Micro(Z):
- 当出现影响 API 所有用户的重大更改时,Major 应增加;
- 当有新功能时,Minor 应该递增,这不会破坏消费者,但可能会破坏提供者,因为它们无法自动提供新功能;
- 对于不会导致任何向后兼容性问题的任何其他更改,Micro 应增加。
显然,向方法添加@Deprecated
不会改变消费者或提供者的兼容性。因此,这是一个微小的变化(在您的示例中,您应该增加“Z”)。它最多是 API 的文档更改。
关于java - 当只有已弃用的方法时,java 包版本如何变化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36421482/