Я обычно работаю с серверной Java и почти в любое приложение (Tomcat/Spring/Play…) требуется добавить end-point, который при HTTP запросе сообщит номер и время сборки приложения. Я перепробовал разные способы и нашел тот, который меня устраивает во всем. Процесс интеграции в любое Java приложение занимает 5-10 минут.
Для начала нужно зарегистрироваться на Backendless и создать там приложение (можно использовать любой другой сервис, который умеет по http запросу отдавать число, увеличивая его каждый раз на 1). Получив APP_ID приложения нужно также получить API_KEY на этой странице.
После этого вы сможете использовать возможность получать целое число, которое будет увеличиваться на 1 после каждого запроса.
Для того, чтобы это число попадало в программу, нужно воспользоваться моей OpenSource библиотекой kolobok. Указываем зависимость на библиотеку в pom.xml или build.gradle.
<dependency> <groupId>com.github.ukman</groupId> <artifactId>kolobok</artifactId> <version>0.1.5</version> <scope>compile</scope> </dependency>
compileOnly 'com.github.ukman:kolobok:0.1.5'
Добавляем аннотацию для поля в каком-либо классе (не забывая прописать правильный APP_ID и API_KEY внутри параметра url).
import org.kolobok.annotation.*; public class Main { @BuildNumber(url = "https://api.backendless.com/${APP_ID}/${API_KEY}/counters/build/increment/get", method = "PUT") public static long bn; @CompileTime public static long ct; public static void main(String args[]) { System.out.println("Build number = " + bn + " compilation time " + new Date(ct)); } }
Теперь после каждой перекомпиляции класса Main у вас в поле bn будет новое число из последовательности возрастающих чисел, а в поле ct- время компиляции. То есть на вход компилятору уйдет что-то вроде.
public static long bn = 1; // 2..3..4..5.. public static long ct = 1580107708793; // System.currentTimeMillis()
После инкрементальной сборки, файл Main.java может не перекомпилироваться и значения останутся прежними, но обычно делают полную очистку всех скомпилированных файлов перед полной сборкой, а значит номер сборки будет обновлен.
Теперь можно использовать эти переменные для показа номера и времени сборки пользователю.
ссылка на оригинал статьи https://habr.com/ru/post/485552/
Добавить комментарий