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

标签 java version

我正在使用 Java 和 Swing 应用程序框架开发桌面应用程序。我有一个关于盒子的应用程序,我想让那个盒子包含一些正在测试的版本的指示。我的偏好是以自动方式更改该值。我正在使用 CruiseControl 构建应用程序,触发对 SVN 的提交。

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

我不是在寻找部署选项或无论如何自动检查更新或类似的东西。我只是希望能够在 about 框中询问测试人员是什么版本并获得可靠的答案。

最佳答案

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

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

<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 文件 list 的一部分作为实现版本。

  <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”,其中最后一个数字是颠覆修订版。有关设置的更多信息,您可以查看完整的 blog post我在这个问题上做了一段时间。

关于java - 在 Java 应用程序中处理版本号的好方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/770364/

相关文章:

php - 如何使用 PHP 或 javascript 检测 Flash 版本?

java - Spring Boot 1.4.1 和 Cassandra 3.x

java - 我应该在循环中内联长代码,还是将其移动到单独的方法中?

java - 如何在 iText 7 中查找文本位置和边界

java - TZupdater 因 tzdata2016g 版本而失败

java - 在 Octave 中导入 Java 类

MySQL 显示不同版本

ios - 将 iOS 10.3.3 与 Xcode 版本 8.2.1 一起使用?

c++ - 将 GetVersionEx 数字转换为操作系统名称

c++ - 同一 (Boost) DLL 的多个版本可以在同一进程中共存吗?