Při vývoji a zejména ladění našich aplikací jsme se setkali s potřebou přistupovat k SVN revizi v aplikaci. Tento článek obsahuje jednoduchý návod, jak nastavit, aby se SVN revize automaticky ukládala do konfiguračního souboru při každém buildu.
Pro získání čísla SVN revize projektu použijeme Build Number Maven Plugin. Požadavkem tohoto pluginu je mít nainstalované SVN a přidané v PATH (plugin využívá příkaz svn info). V následujícím příkladu si ukážeme, jak ukládat číslo revize do konfiguračního souboru config.properties při sestavování aplikace (mvn package). Z konfiguračního souboru potom můžeme číslo revize vkládat např. do e-mailu popisujících vzniklé chyby. Domovská stránka pluginu je zde.
Nastavení v pom.xml
Pro spravný běh pluginu je potřeba mít vyplněný scm provider:
<scm> <developerconnection>scm:svn:https://</developerconnection> </scm>
Uživatelské jméno, heslo a správnou url na repozitář je potřeba vyplnit pouze v případě, že pokud bychom chtěli využít kontrolu, zda nemáme nějaké lokálně modifikované soubory nebo automatický update před sestavením aplikace.
Definice pluginu:
<build> <plugins> <plugin> <groupid>org.codehaus.mojo</groupid> <artifactid>buildnumber-maven-plugin</artifactid> <version>1.0-beta-2</version> <executions> <execution> <phase>validate</phase> <goals> <goal>create</goal> </goals> </execution> </executions> <configuration> <docheck>false</docheck> <doupdate>false</doupdate> </configuration> </plugin> </plugins> </build>
Atribut doCheck zapíná kontrolu lokálně modifikovaných souborů, atribut doUpdate zapíná automatický update. Po tomto nastavení je revize aplikace dostupná v proměnné ${buildNumber}. Použitím mavenovského filtrování dostaneme toto číslo do konfiguračního souboru config.properties.
Nastaveni v config.properties:
application.revision=${buildNumber}
Zde je příklad doplnění revize do config.properties v produkčním profilu (mvn package -Pprodukce). Při použití filtrování si ovšem musíme dát pozor, jestli se nám v config.properties nechtěně nenahradí nějaká jiná proměnná (např. ${project.name}) a případně ji v projektu přejmenovat.
<profile> <id>produkce</id> <build> <plugins> <plugin> <artifactid>maven-war-plugin</artifactid> <configuration> <webresources> <resource> <directory>${basedir}/src/produkce/config</directory> <filtering>true</filtering> <includes> <include>config.properties</include> </includes> <excludes> <exclude>*.xml</exclude> </excludes> <targetpath>WEB-INF</targetpath> </resource> </webresources> </configuration> <version>2.1-alpha-1</version> </plugin> </plugins> </build> </profile>
Aktualizováno na základě komentářů
Nastaveni buildnumber-maven-plugin
Číslo revize pokud není dostupná revize ze SVN
Pokud není k dispozici SVN, stačí do konfigurace dopsat „pseudo“ číslo verze:
<configuration> ... <revisiononscmfailure>NA</revisiononscmfailure> </configuration>
Poslední komentáře