Java 将版本留在API中有什么优点和缺点?

Java 将版本留在API中有什么优点和缺点?,java,versioning,release-management,Java,Versioning,Release Management,考虑到这一点,我们将发布一组API,它们很可能在未来从下到上重新设计,将版本控制保留在包级别以实现向后兼容性,这样用户就可以始终获得最新版本而不必担心破坏代码,这会比发布不同的库版本更好吗?如果用户不坚持某个发布版本,则不能始终保证向后兼容性 e、 g.MyClass-LATEST.jar,它有包MyClass.v1以后再提供包MyClass.v2同时将MyClass.v1保存在同一个库MyClass-LATEST.jar中 与发布MyClass vX.X-RELEASE.jar相反 干杯我不会

考虑到这一点,我们将发布一组API,它们很可能在未来从下到上重新设计,将版本控制保留在包级别以实现向后兼容性,这样用户就可以始终获得最新版本而不必担心破坏代码,这会比发布不同的库版本更好吗?如果用户不坚持某个发布版本,则不能始终保证向后兼容性

e、 g.MyClass-LATEST.jar,它有
包MyClass.v1
以后再提供
包MyClass.v2同时将
MyClass.v1
保存在同一个库MyClass-LATEST.jar中 与发布MyClass vX.X-RELEASE.jar相反


干杯

我不会在API中添加版本号。如果发布的版本不向后兼容,则用户无需升级。但是,如果您使一个版本向后兼容,比如一个bug修复版本,那么您将强制用户更改其包名,而不只是插入一个新的jar


构建工具(ant、maven、gradle等)用于管理版本。您不需要在API包名称中这样做。

谢谢,但我不是这个意思。毫无疑问,bug修复将在那里,并停留在相同的API中。但是v1,v2。。。会有根本的不同。当然,最新版本也可以包含对旧版本的bug修复。但是如果你有v1.1或v1.2呢?在这两种情况下,您认为将API版本放在包名中有什么好处?哼,编号可能会让人困惑。比如说它的MyClass.lite;稍后在MyClass.nextgen;。。。诸如此类的东西我根本不会在你的类名中使用限定符。这使得类名更加混乱。如果我想使用您的MyClass API,如果我需要知道它是否是MyClass.lite、MyClass.nextgen等,那将是一件多么痛苦的事情。这也会使开发变得更加困难,例如将MyClass.v1到MyClass.v2的更改合并,这些更改现在是不同的文件。保持简单。好吧,我明白了,人们接受了培训,接受了v2.0版本可能与v1.0版本不兼容的说法。