Gå til innhold

Automatisk prosjektversionering med Java, Maven, og Subversion


Anbefalte innlegg

Heisann,

 

Jeg har drevet en del på med maven i det siste, typisk sammen med svn, og har undret litt på hvordan versjonering fungerer. Nå mener jeg hvordan softwaren blir versjonert, ikke subversion. Det jeg vil, er f eks å enkelt kunne hente ut en string-resource på en måte hvor major, minor, og revision blir hentet fra en pom.xml fra maven og build automatisk blir incremented hver gang jeg bygger prosjektet, slik at jeg f eks kan printe ut "Versjon 3.0.8 Build 3421" et eller annet sted, men at det altså skjer rimelig automatisk.

 

1. Hva er den vanlige måten å gjøre dette på? Har maven noe innebygget funksjonalitet for nettopp dette?

2. Hvordan henter jeg ut en slik automatisk string?

3. I maven sine pom.xml-er, hva betyr det som står etter versjonen, f eks SNAPSHOT, under <version>3.0.8-SNAPSHOT</version>, og har dette noe med saken min å gjøre?

 

Takk for svar!

Endret av LostOblivion
Lenke til kommentar
Videoannonse
Annonse

Edit: For build nummer er det sikkert best å se på en Continuous Integration Server som Hudson, Apache Continuum etc, og kanskje en Maven Repository Manager som Nexus.

 

1 og 2:

Jeg har sett dette blitt gjort, er ikke helt sikker på detaljene.

 

Du bruker en maven plugin (f.eks maven-jar-plugin) til å lage manifest med versjonsinformasjon (http://download.oracle.com/javase/tutorial/deployment/jar/packageman.html) og henter versjonen med

this.getClass().getPackage().getImplementationVersion();

 

Merk at strengen du får der kan være null, og sannsynligvis er det under utvikling. (Manifestet blir laget når maven pakker jar filen)

 

3:

SNAPSHOT er maven sin default måte å versjonere utviklingsversjoner på. Når du kjører en maven release fjernes snapshot fra release versjonen og neste versjon økes. Det er litt arbeid å sette dette opp første gang, men når alt er på plass kan maven lage tag i svn, laste opp filer til et repository og håndtere versjonering med en enkelt kommando. Dokumentasjonen på Maven release manager har detaljer rundt dette.

Endret av Kiff
Lenke til kommentar

Takk for svar, Kiff. Finnes det virkelig ikke noen enklere måte å gjøre dette på? Alt jeg ønsker er en måte å hente ut f.eks. 3.0.3.2549 under runtime, hvor 3.0.3 er hentet fra versjonen i pom-en og 2549 er automatisk og unikt generert hver gang jeg kjører en build. Trodde dette var noe som var standard i ethvert prosjekthåndteringsverktøy som f.eks. maven. :S

Endret av LostOblivion
Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...