如果您有一个发布库和应用程序的项目,您如何处理两者之间的版本号。
示例:您的项目提供了一个库,可将不同的文件格式相互转换。该库已发布以包含在其他应用程序中。但是您还发布了一个命令行应用程序,该应用程序使用该库并实现该功能的接口。
库的新版本会导致应用程序的新版本(以利用所有新功能),但应用程序的新版本可能不会触发库的新版本。现在如何处理版本号:完全独立还是应该以某种方式依赖库和应用程序版本?
完全独立的版本号,但命令行(或任何其他相关)应用程序应该在帮助部分或横幅中说明它是针对哪个版本的库进行编译的。
这样,您将能够判断应用程序将具有哪些功能并减少潜在的混淆,特别是考虑到有人可以出于任何原因针对旧库编译较新的应用程序版本。此外,您可以将它们解耦并可以在库中添加功能,而无需依赖于新应用程序版本的发布等。
如果您确定您将始终希望所有应用程序和库同步进行,那么您可以使用相同的数字,但这并不是一个强有力的理由。
我会说使用单独的版本号,当然还要记录应用程序的每个版本所需的最低库版本。如果它们始终具有相同的版本号,并且您只针对相同编号的库版本测试应用程序,那么它们并不是真正独立的组件,所以不要说它们是。将整个批次作为一个块释放。
如果你将它们分开,你仍然可以在适当的时候给它们相同的版本号——例如,在重大兼容性中断之后,你可能会同时发布两者的 2.0 版。
以下示例说明: xsltproc(命令行应用程序)作为 libxslt(库)的一部分发布,因此没有自己的版本号。但是 libxslt 依赖于另外两个库,并且它们的版本号是独立的。
$ xsltproc --version
Using libxml 20628, libxslt 10120 and libexslt 813
xsltproc was compiled against libxml 20628, libxslt 10120 and libexslt 813
libxslt 10120 was compiled against libxml 20628
libexslt 813 was compiled against libxml 20628
我们构建了一个使用框架的应用程序。我们为两者保留单独的版本号。
这很好用,尤其是现在框架和应用程序已经变得足够大,可以由不同的团队开发。
所以我的意见......保持版本号分开。