我必须管理Java构建,我不知道如何最好地管理软件的版本,以便它可以显示在about对话框等上。
你们是怎么做到的?我们正在使用Maven,我可以以某种方式重用pom.xml中定义的版本吗?我也有兴趣知道Ant通常是如何完成的。
答案 0 :(得分:5)
您可以通过加载pom.properties文件来获取jar的Maven版本。这是由Maven在罐子里自动创建的。
应位于jar内,在此路径
META-INF\maven\{groupId}\{artifactId}\pom.properties
提到的更多here。
答案 1 :(得分:3)
基本解决方案:Maven将版本信息写入jar内的Manifest.xml。从Java中读取此jar并提取此信息。
强制maven创建更多detailed Manifest。
从java中读取jar文件:
Manifest manifest = new JarFile("path/to/your.jar").getManifest();
String version = manifest.getAttributes().getValue("Specification-Version:");
如果您需要找到罐子的位置:
MyClass.class.getProtectionDomain().getCodeSource().getLocation().getPath();
答案 2 :(得分:1)
我们有一个庞大的开发团队,因此我们更有用的是确切知道我们正在运行或谈论的给定目标版本中的哪个版本。这就是为什么你会看到人们在他们的版本信息中包含内部版本号。就个人而言,它都是一个任意标签,YYYYMMddHHmmss(或类似)格式的构建时间戳提供了一个很好的,自然可排序的版本。
maven-resource-plugin允许您在构建JAR文件时定义要替换为值的过滤器字符串。然后就像任何其他应用程序属性一样读取值。