Получение идентификатора сборки в приложении Java

Есть ли у кого-нибудь простое предложение для записи идентификатора сборки (сгенерированного во время компиляции), который отображается в строке заголовка приложения во время выполнения?

При сборке из Eclipse все, что мне нужно, это идентификатор, затем я могу передать его в заголовок.


person Mark Mayo    schedule 30.11.2010    source источник
comment
какой инструмент сборки вы используете?   -  person jmj    schedule 30.11.2010
comment
Я просто создаю его в eclipse (с ADT для Android). Так что в настоящее время у меня нет генерируемого идентификатора сборки (о котором я знаю). Мне нужно сначала создать один из них (делает ли это maven?), А затем получить к нему доступ во время выполнения из приложения.   -  person Mark Mayo    schedule 30.11.2010
comment
У этого поста отличное сквозное описание: rterp.wordpress.com/2012/03/16/ Также полезно: stackoverflow.com/questions/2469922/   -  person Jelle van Geuns    schedule 29.12.2012


Ответы (4)


Если вы используете Ant, вы можете легко настроить цель «jar» или «package» так, чтобы она генерировала файл, включающий текущую метку времени, и включала ее в свой jar вывод.

При использовании Maven есть несколько способов добиться чего-то подобного, например, перейти к Ant с помощью плагин antrun.

person matt b    schedule 30.11.2010
comment
Привет, может быть, немного поздно, но вы можете попробовать: $ {maven.build.timestamp} опубликовано Николасом Тубланом на docs.codehaus.org/display/MAVENUSER/ - person ATorras; 15.03.2012

Если вы используете 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>

Затем используйте $ {buildNumber} позже в вашем pom, чтобы ссылаться на идентификатор сборки. Я использую его, чтобы записать это число в манифест таким образом, используя maven-war-plugin.

                <archive>
                    <manifest>
                        <addDefaultImplementationEntries>true</addDefaultImplementationEntries>
                    </manifest>
                    <manifestEntries>
                        <Implementation-Build>${buildNumber}</Implementation-Build>
                    </manifestEntries>
                </archive>
person shsteimer    schedule 30.11.2010

Если вы хотите использовать временную метку для сборки, вы можете получить ее из даты модификации jar или класса или файла МАНИФЕСТА.

Maven заполняет файл МАНИФЕСТА номером версии модуля в банке. Вы можете прочитать это, чтобы получить версию всех используемых вами модулей maven.

Включение метки времени в «уникальный идентификатор» гарантирует, что каждая сборка будет иметь свой идентификатор.

person Peter Lawrey    schedule 30.11.2010

Если вы полностью строите в Eclipse, вам необходимо создать действие сборки, которое генерирует ресурс в вашей исходной папке с необходимой информацией - файл свойств подойдет - который затем распространяется на ваш двоичный вывод и может быть прочитан во время выполнения после что вы можете делать то, что вам нужно, чтобы это показать.

person Thorbjørn Ravn Andersen    schedule 30.11.2010