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

在Java应用程序中处理版本号的好方法是什么?

令狐嘉运
2023-03-14
问题内容

我正在使用Java和Swing应用程序框架开发桌面应用程序。我有一个关于box的应用程序,我希望该box包含一些有关正在测试哪个版本的指示。我希望该值可以自动更改。我正在使用CruiseControl构建从SVN提交触发的应用程序。

他人使用什么机制来完成这项工作?是否有一个关于Box版本号的库或一组与蚂蚁相关的工具,我可以在构建过程中使用它们?

我不是在寻找部署选项,也不是在寻找自动更新或类似的东西。我只是想问问测试人员“关于”框中的版本是什么,并获得可靠的答案。


问题答案:

我将通过声明我使用Apache
Maven
来开始这篇文章。您也可以使用Ant或其他工具执行类似的操作,但这就是我使用maven所做的事情。

我发现处理此问题的最佳方法是使用项目版本以及Subversion修订版作为内部版本号。在Maven中,您可以包括以下内容。这将为您提供Subversion版本号$
{scm.revision}。

<build>
    <plugins>
      <plugin>
        <artifactId>maven-scm-plugin</artifactId>
        <executions>
          <execution>
            <id>getting-scm.revision</id>
            <phase>validate</phase>
            <goals>
              <goal>update</goal>
            </goals>
          </execution>
        </executions>
      </plugin>
    </plugins>
  </build>

之后,我将其用作jar文件清单的一部分,作为实现版本。

  <plugin>
    <artifactId>maven-jar-plugin</artifactId>
    <version>2.1</version>
    <configuration>
      <archive>
        <manifestEntries>
          <Implementation-Version>${this.version}.${scm.revision}</Implementation-Version>
        </manifestEntries>
      </archive>
    </configuration>
  </plugin>

这样做的好处是,您可以使用以下代码从代码中进行访问:

Package p = getClass().getPackage();
String version = p.getImplementationVersion();

这样就可以得到完整的内部版本号,例如“
1.0.13525”,其中最后一个数字是Subversion修订版。有关设置的更多信息,您可以查看我很久以前就此问题撰写的完整博客文章。



 类似资料:
  • 问题内容: 什么是最好的Java图像处理库/方法?[关闭]我同时使用JAI媒体API和ImageMagick吗? ImageMagick存在一些可伸缩性问题,基于JNI的JMagick也没有吸引力。与ImageMagick相比,JAI执行大小调整操作时的质量结果较差。 有谁知道过任何出色的开源或商业工具,它们都是本机Java并可以提供高质量的结果? 问题答案: 我知道这个问题已经很老了,但是随着新

  • 我正在使用JDK附带的Oracle工具为JavaFX8应用程序创建一个可安装的包。在Mac上创建文件,在Linux上使用文件。我从Gradle调用一个Ant脚本来创建包。我遇到的问题是,包中包含的版本号总是1.0,而不是我指定的版本。Ant脚本的相关部分如下: 您可以在这里的上下文中看到完整的脚本。 在Mac上,右键单击应用程序图标并选择“Get Info”显示1.0而不是正确的版本号,正如您在下

  • 问题内容: 我只是在学习Google App Engine,并试图找到一种管理与Google Cloud SQL实例的数据库连接的好方法(如果您还没有使用GC- SQL,那么基本上是在云中使用MySQL,限制)。 我正在将python(2.7)GAE环境与webapp2框架一起使用来处理请求。我知道常见问题解答说,建议每个请求都与数据库建立新的连接,但是我不知道关闭连接的推荐方法是什么。每次我在开

  • 问题内容: 事实 在我的Java应用程序中,我必须同时处理具有不同架构版本的XML文件(xsd文件)。XML文件的内容在不同版本之间仅发生了少许变化,因此我想主要使用相同的代码来处理它,并根据所使用架构的版本进行一些区分大小写的操作。 当前解决方案 现在,我正在使用SAX解析器解析XML文件,而我自己忽略了架构版本,只是检查是否存在需要处理的标签。 可能的选择 我真的很想使用JAXB生成用于解析X

  • 我试图实现事件处理函数,以避免每次组件和时创建新函数。 场景1: 如果我像下面那样在构造函数中绑定函数,并且在中没有参数,那么它只会在bundle文件中创建一个新函数一次 场景2: 但是,当我想将以及传递给函数时,我相信每当组件和 所以 如何更好地编写场景2,使新函数在bundle文件中只创建一次,而不是每次组件渲染和重新渲染时都创建一次?可能吗? 编辑: param1和param2是我自己的自定