首先-确保您的程序或工具可以显示一些版本号。但是它来自哪里呢?我们将其包含在构建中。
只要确保它们在运行时在某个地方可见!如果没有可运行的内容,则添加一个Main,然后使其成为Main-Class,仅打印版本。然后您可以说,请输入
java-jar YourLibrary.jar,它只运行main并打印您的版本。
如果资源(例如Version.txt)位于klazz旁边,则这是从罐子内部从罐子中读取资源的代码的开头:
ClassLoader loader = klazz.getClassLoader();InputStream in = loader.getResourceAsStream (name);
我喜欢在每个版本中使其自动化,所以我不会忘记对其进行修改。我使用的是.properties,而不是文本文件,但是您可以在Version.txt中执行相同的操作。
(实际上,目前,我们只包括构建时间。但是想法是相同的。)
我这样做-我有一个Version.properties文件,其中包含:
buildHost = @HOSTNAME@buildTime = @BUILDTIME@buildUser = @USERNAME@
作为ANT脚本的一部分,我们这样做:
<tstamp> <format property="BUILDTIME" pattern="yyyy.MM.dd.HH:mm:ss z" locale="en,UK" /></tstamp><exec executable="hostname" outputproperty="HOSTNAME"> <!-- note, this is unixey, of course --> <arg value="-s" /></exec><property environment="env"/><property name="USERNAME" value="${env.USER}"/><property name="build.info" value="path/to/Version.properties" /><copy file="${build.info}" tofile="${obj.dir}/${build.info}" overwrite="true"> <filterchain> <replacetokens> <token key="BUILDTIME" value="${BUILDTIME}"/> <token key="HOSTNAME" value="${HOSTNAME}"/> <token key="USERNAME" value="${USER}"/> </replacetokens> </filterchain></copy>注意-以上是特定于平台的,但是您知道了。
以及如何读取.properties文件,这是另一堆代码,但很容易。



