【问题标题】:Obtaining the Build ID in a Java Application在 Java 应用程序中获取构建 ID
【发布时间】:2011-05-17 21:59:37
【问题描述】:

有没有人有一个简单的建议来记录在运行时显示在应用程序标题栏中的构建 ID(在编译时生成)?

在 Eclipse 中构建,我只需要 ID,然后我可以将它传递给标题。

【问题讨论】:

  • 您使用的是哪个构建工具?
  • 我只是在 Eclipse 中构建它(使用 ADT for Android)。所以我目前没有生成构建ID(我知道)。我需要先生成一个(maven 会这样做吗?),然后在运行时从应用程序访问它。
  • 这篇文章有一个很好的端到端描述:rterp.wordpress.com/2012/03/16/… 也很有用:stackoverflow.com/questions/2469922/…

标签: java build compile-time unique-id buildnumber-maven-plugin


【解决方案1】:

如果您使用的是 Maven,尤其是如果您想要来自 SVN 的内部版本号(尽管它可以通过配置为您生成唯一的内部版本号),请查看 buildnumber-maven-plugin

您只需在 pom.xml 文件中添加类似于以下内容的 sn-p:

        <plugin>
            <groupId>org.codehaus.mojo</groupId>
            <artifactId>buildnumber-maven-plugin</artifactId>
            <version>1.0-beta-3</version>
            <executions>
                <execution>
                    <phase>validate</phase>
                    <goals>
                        <goal>create</goal>
                    </goals>
                </execution>
            </executions>
            <configuration>
                <doCheck>true</doCheck>
                <doUpdate>true</doUpdate>
            </configuration>
        </plugin>

然后稍后在您的 pom 中使用 ${buildNumber} 来引用构建 ID。我使用它使用 maven-war-plugin 将该数字写入清单。

                <archive>
                    <manifest>
                        <addDefaultImplementationEntries>true</addDefaultImplementationEntries>
                    </manifest>
                    <manifestEntries>
                        <Implementation-Build>${buildNumber}</Implementation-Build>
                    </manifestEntries>
                </archive>

【讨论】:

    【解决方案2】:

    如果您使用的是 Ant,您可以轻松设置“jar”或“包”目标,以便它生成包含当前时间戳的文件并将其包含在您的 jar 输出中。

    如果使用 Maven,有几种方法可以实现类似的效果,例如使用 the antrun plugin 下拉到 Ant。

    【讨论】:

    【解决方案3】:

    如果您想为构建使用时间戳,可以从 jar 或类修改日期或 MANIFEST 文件中获取。

    Maven 使用 jar 中的模块版本号填充 MANIFEST 文件。您可以阅读本文以获取您正在使用的所有 maven 模块的版本。

    将时间戳作为“唯一 ID”的一部分可确保每个构建都有不同的 ID。

    【讨论】:

      【解决方案4】:

      如果您完全在 Eclipse 中构建,您需要创建一个构建操作,该操作会在您的源文件夹中生成一个包含您需要的信息的资源 - 一个属性文件会很好 - 然后传播到您的二进制输出并可以读取在运行时,您可以执行所需的操作来显示它。

      【讨论】:

        猜你喜欢
        • 2021-11-12
        • 1970-01-01
        • 2016-01-09
        • 2015-05-31
        • 2020-05-05
        • 2020-09-12
        • 1970-01-01
        • 2010-12-30
        • 1970-01-01
        相关资源
        最近更新 更多