gpt4 book ai didi

java - 如何在我们的 java jar 中插入用户可以访问的版本号?

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:09:09 25 4
gpt4 key购买 nike

我们有一个库,每两周发布一次不同的版本号。问题是为了在我们的 jar 中存储版本号,我们有一个 version.txt 文件,它只包含版本号,然后被包含到构建中。这似乎是错误的方法,但我想不出更好的解决方案。有什么更好的方法可以将版本号存储在我们的 jar 中,以便如果用户调用我,我可以轻松找到他们正在使用的我们产品的版本?

最佳答案

首先——确保您的程序或工具可以显示版本号。但它从何而来?我们将其包含在构建中。

只要确保它在运行时在某个地方可见即可!如果没有可运行的东西,添加一个 Main,并使其成为 Main-Class,它只打印版本。然后你可以说,请键入 java -jar YourLibrary.jar,它只会运行 main 并打印你的版本。

如果资源(例如 Version.txt)在 klazz 旁边,这里是从 jar 中读取资源的代码的开头:

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 文件,这是另一小堆代码,但非常简单。

关于java - 如何在我们的 java jar 中插入用户可以访问的版本号?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6611171/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com