为了支持需要,我需要在我们的Java库中添加版本和构建标识符。该库本身是一个工具包,没有用户交互,并在不同的环境中使用(独立的Java应用程序,Web应用程序,Eclipse应用程序,Maven依赖项等)。
我想要的是一个带有一些常量的类,给我上述描述的信息(例如
我想要的是一个带有一些常量的类,给我上述描述的信息(例如
MyAppVersion.BUILD
等),以便它们可以显示在对话框,命令行输出等中。根据我的研究,似乎有以下方法:
- 将版本信息添加到文件名中,例如
myLibrary-0.1.2.jar
;但在我们的情况下不可行,因为我在部署时无法控制文件名。 - 向
MANIFEST.MF
添加信息并以编程方式读取,如here所述。然而,我不确定这种方法在不同的类加载器(Eclipse、OSGi、应用程序服务器等)方面有多么健壮,如果JAR文件被重新打包,这些信息也会丢失。 - 使用包含版本号的
version.properties
文件,如here所述,并在构建过程中使用脚本更新version.properties
文件。 - 直接将版本信息硬编码到类中,并使用脚本更新此信息。
还有其他方法吗?最后一个选项对我来说似乎最“强大”,是否有反对这个变体的意见?是否有Maven插件可以在构建期间支持更新MyAppVersion.java
文件中的此信息?
String version = this.getClass().getPackage().getImplementationVersion();
- Andrew Thompson