当前位置: 首页 > 面试题库 >

如何在用户可以访问的Java jar中插入版本号?

南宫鸿晖
2023-03-14
问题内容

我们有一个图书馆,每两周发布一个版本号不同的库。问题是,为了将版本号存储在我们的jar中,我们有一个version.txt文件,其中仅包含版本号,然后将其包含在内部版本中。这似乎是错误的方法,但我无法提出更好的解决方案。有什么更好的方法来将版本号存储在我们的jar中,以便如果用户打电话给我,我可以轻松地找到他们正在使用的产品的版本?


问题答案:

首先-确保您的程序或工具可以显示一些版本号。但是它来自哪里呢?我们将其包含在构建中。

只要确保它们在运行时在某个地方可见!如果没有可运行的内容,则添加一个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文件,这是另一堆代码,但很容易。



 类似资料:
  • 问题内容: 我无法连接到以nginx入口运行的应用程序(Docker桌面赢10)。 nginx- ingress控制器容器正在运行,应用程序运行良好,并且我已经创建了一个入口。但是,当我尝试连接到本地主机上的应用程序时,出现“连接被拒绝”的提示。 我在日志中看到此错误: 我认为端口443已由其他应用程序使用,可能是zscaler安全性或skype。摘录自: 我不知道如何使入口工作。请帮忙! 我的入

  • 问题内容: 您如何访问“工作流程” Jenkins作业的“此构建已参数化”部分中的设置? 测试用例 创建一个工作流作业。 启用“此构建已参数化”。 添加具有默认值的STRING PARAMETER 。 将以下代码添加到: 运行工作。 结果 问题答案: 我认为使用Workflow插件时,变量可以直接使用,而不是通过env。尝试:

  • 问题内容: 在安装了“版本号插件”的Jenkinsfile中尝试此步骤: 并得到此错误: 在Jenkinsfile中使用此插件的正确方法是什么? 问题答案: 您需要使用它作为步骤。 看一看https://your_jenkins_url.com/pipeline- syntax/ 并检查已剪切生成器中VersionNumber步骤的所有选项。

  • 问题内容: 我想一些脚本加载到使用页面上。脚本似乎已加载到DOM中,但从未执行(至少在Firefox和Chrome中)。将脚本插入时,是否可以执行脚本? 样例代码: 问题答案: 您必须使用eval()来执行作为DOM文本插入的任何脚本代码。 MooTools会自动为您执行此操作,而且我敢肯定jQuery也是如此(取决于版本。jQuery 1.6+版本使用)。这样可以节省解析标签和转义内容的麻烦,以

  • 我有一个kts gradle构建脚本,其中使用了这个插件。 插件将属性设置为字符串并添加一些附加属性: 虽然version属性是一个字符串,但它确实公开了一些其他属性。这些是、、、和 总是失败: 未解决的参考:主要 有没有办法访问这些属性,或者我必须回到基于groovy的<code>gradle。构建buildscript?

  • 我有一个表格,其中有一列为文本格式。我需要像下面这样写一个插入CQL。 插入到对照表(prop_name,描述,一些值)值('ABC','XYZ', dateof(now()); 这里的“somevalue”列是文本类型,但我需要插入当前日期时间。