获取Java应用程序中的构建ID

时间:2010-11-30 14:25:49

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

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

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

4 个答案:

答案 0 :(得分:4)

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

您只需将类似于以下内容的代码段添加到您的pom.xml文件中:

        <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>

答案 1 :(得分:3)

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

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

答案 2 :(得分:2)

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

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

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

答案 3 :(得分:0)

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