A minimum set of utilities required by all other OSGL Java libraries.
Добавьте следующую зависимость в файл pom.xml
:
<dependency>
<groupId>org.osgl</groupId>
<artifactId>osgl-bootstrap</artifactId>
<version>${osgl-bootstrap-version}</version>
</dependency>
Для автора библиотеки или приложения необходимо подготовить информацию о версии, чтобы инструмент Version мог генерировать версию во время выполнения.
Предположим, что имя пакета вашей библиотеки или приложения — org.mrcool.swissknife
, вам нужно добавить файл с именем .version
в каталог src/resources/org/mrcool/swissknife
. Содержимое файла должно быть следующим:
# artifact является необязательным, если не указан, будет использоваться имя пакета
artifact=<delivery-name>
# версия является обязательной, если не указана, будет возвращено значение UNKNOWN
version=<версия проекта>
# номер сборки является необязательным, если не указан, будет использована пустая строка
build=<номер сборки SCM, например, git hash>
В качестве хорошей практики вы можете положиться на фильтрацию ресурсов Maven для автоматического создания версии и номера сборки для вас, в этом случае ваш файл .version
будет выглядеть так:
artifact=${project.artifactId}
version=${project.version}
## номер сборки является опциональным
build=${buildNumber}
Где ${project.artifactId}
и ${project.version}
берутся из стандартной среды Maven, а ${buildNumber}
— из плагина maven buildnumber (http://www.mojohaus.org/buildnumber-maven-plugin/).
Примечание: чтобы использовать переменные среды Maven в файле .version
, необходимо включить фильтр в плагине ресурсов:
<resources>
<resource>
<directory>src/main/resources</directory>
<filtering>true</filtering>
<includes>
<include>**/.version</include>
</includes>
</resource>
</resources>
После того как вы подготовили файл .version
и упаковали его в jar-файл, пользователь jar-файла всегда может получить доступ к информации о версии через простой вызов API:
Version version1 = Version.of(org.mrcool.swissknife.SwissKnife.class);
System.out.println(version1.getPackage()); // print `org.mrcool.swissknife`
System.out.println(version1.getArtifactId()); // print `swissknife`
System.out.println(version1.getProjectVersion()); // print `1.0`
System.out.println(version1.getBuildNumber()); // print `ebf1`
System.out.println(version1.getVersion()); // print `r1.0-ebf1`
System.out.println(version1); // print `swissknife-r1.0-ebf1`
// Другой способ получения информации о версии
Version version2 = Version.of("org.mrcool.swissknife.db");
// Если версия определённой библиотеки SNAPSHOT, например 1.0-SNAPSHOT,
// то тег версии украшается символом `v` вместо `r`:
System.out.println(version2.getProjectVersion()); // print `1.0-SNAPSHOT`
System.out.println(version2.getBuildNumber()); // print `51b9`
System.out.println(version2.getVersion()); // print `v1.0-SNAPSHOT-51b9`
System.out.println(version2); // print `swissknife-v1.0-SNAPSHOT-ebf1`
Советы: если приложению или библиотеке необходимо определить собственную версию, есть более короткий путь:
package com.myproj;
public class Foo {
public Version version() {
// нормальный способ получить версию Foo:
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Комментарии ( 0 )