@version 标签应该表示此源文件所属的工件的版本,还是上次更改此文件时的版本?

Should @version tag denote the version of the artifact this source file is a part of, or the version when this file was last changed?

以前我的理解是 @version 标签的目的是向库用户显示特定文件最后更改的版本。例如,如果 liblibrary v1.7 有一个新版本,并且其开发人员在实际状态的源中维护 @version 标签(手动或使用自动化工具),那么可以查看源工件并查看该特定文件自以前的版本 1.6 以来是否已更改。

但是这里有一段 javadoc 文档,它说每个源文件中的 @version 标签应该只包含整个工件的当前发布版本。

来自javadoc - The Java API Documentation Generator

This tag is intended to hold the current version number of the software that this code is part of

但我完全看不出这有什么用处。如果您可以在构建工具(构建工件之前)或工件名称(构建工件之后)中看到它,为什么每个源文件中都有当前版本?

那么你能否准确指定 @version 标签中应该包含的内容:该文件上次更改时的版本(因此源 artfiact 中的每个文件都可能有自己的 @version 标签),或者只是工件的版本(所以每个源文件都有相同的 @version 标签)?前一种方法真的用过吗?

根据我的经验,版本标签始终包含 文件 的当前版本。

由于可以在 运行 时检查注释,因此可以 useful/practical 检查文件的版本注释。一个示例可能是从网络位置更新文件(想想视频游戏更新)。

由于注释对 program/compiler 比对程序员更有用,因此版本标签应始终包含当前版本。

但是,每个开发人员可能会以不同方式使用这些版本标签,这取决于他们。在您介绍的案例中,他们发现以一种意想不到的方式使用版本标签在某种程度上帮助了他们。

所以是的,您可以将任何您想要的内容放入版本标签中。它是否有用由您的程序确定。

关于你最后一个问题,是的。开发人员之间的版本编号差异很大(我在 company/group 的上下文中使用术语开发人员,而不是个人)。一些开发人员为每个稳定版本使用一个版本号。其他人使用单独的文件版本号。

我更喜欢后者,因为它允许您查看某些文件的更新或更改频率。

当然这都是猜测和意见。