Plug-in buildnumber-maven-plugin
Ako zaviesť do názvu artefaktu v Mavene číslo revízie v SVN? Napr: maven-svn-version-demo-r1120-0.0.1-SNAPSHOT.jar
?
Mavenovský plug-in buildnumber-maven-plugin
dokáže zistiť posledné číslo revízie v SVN a zaviesť ho do POMu ako premennú buildNumber
.
Ak ho chceme zmysluplne použiť, potrebujeme:
- deklarovať plug-in v POMe
- deklarovať cestu k SVN úložisku
- niekde zmysluplne využiť premennú
buildNumber
Deklarácia v pom.xml
Deklarácia je jednoduchá:
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>buildnumber-maven-plugin</artifactId>
<version>1.2</version>
<executions>
<execution>
<phase>validate</phase>
<goals>
<goal>create</goal>
</goals>
</execution>
</executions>
</plugin>
Touto deklaráciou zavesíme na úvodnú validačnú fázu cieľ buildnumber:create
, čo znamená, že plug-in sa bude automaticky volať vo všetkých štandardných cieľoch.
Cesta v SVN úložisku
Na to, aby plug-in dokázal zisťovať čísla revízii na SVN serveri, je potrebné deklarovať element <scm>
s koordinátmi úložiska:
<scm>
<connection>scm:svn:http://kapsa.sk/svn/kapsa/maven-svn-version-demo</connection>
</scm>
Zmysluplné použitie
Premennú buildNumber
môžeme využiť napr. v zmene názvu artefaktu:
<finalName>${project.artifactId}-${project.version}-r${buildNumber}</finalName>
Zostavenie
Ak teraz zavoláme mvn package
, výsledkom bude maven-svn-version-demo-r1120-0.0.1-SNAPSHOT.jar
.
Čísla verzií?
V štandardnom správaní sa číslo revízie prevezme z lokálnej kópie. V niektorých prípadoch však chceme mať istotu, že revízia v lokálnej kópii a revízia na vzdialenom serveri sa zhodujú. Potom využime dve nastavenia:
doUpdate
: pred pridelením revízie sa synchronizuje vzdialená kópia s lokálnou cezsvn update
.doCheck
: ak sa zistí, že v lokálnej kópii sú necommitnuté zmeny, zostavovanie projektu zlyhá.
Obe hodnoty sú štandardne vypnuté, ale môžeme ich zapnúť cez:
<configuration>
<doCheck>true</doCheck>
<doUpdate>true</doUpdate>
</configuration>