Injisere Git-informasjon til våren

1. Oversikt

I denne opplæringen skal vi vise hvordan vi injiserer Git-depotinformasjon i et Maven-bygget Spring Boot-basert program.

For å gjøre dette vil vi bruke maven-git-commit-id-plugin - et hendig verktøy laget utelukkende for dette formålet.

2. Maven-avhengigheter

La oss legge til et plugin til a delen av vår pom.xml fil av prosjektet vårt:

 pl.project13.maven git-commit-id-plugin 2.2.1 

Du finner den siste versjonen her. Husk at dette slugin krever minst 3.1.1 versjon av Maven.

3. Konfigurasjon

Plugin har mange praktiske flagg og attributter som utvider funksjonaliteten. I denne delen skal vi kort beskrive noen av dem. Hvis du vil bli kjent med dem alle, kan du gå til siden til maven-git-commit-id-plugin og hvis du vil gå rett til eksemplet, gå til seksjon 4.

Følgende utdrag inneholder eksempler på plugin-attributter; spesifiser dem i en seksjonen i henhold til dine behov.

3.1. Mangler lager

Du kan konfigurere den til å utelate feil hvis Git-arkivet ikke er funnet:

falsk

3.2. Git Repository Location

Hvis du vil spesifisere tilpasset .git depotplassering, bruk dotGitDirectory Egenskap:

$ {project.basedir} /submodule_directory/.git

3.3. Output-fil

For å generere egenskapsfil med et tilpasset navn og / eller katalog, bruk følgende avsnitt:

 $ {project.build.outputDirectory} /filnavn.egenskaper 

3.4. Rettferdighet

For mer sjenerøs loggbruk:

ekte

3.5. Egenskaper Filgenerering

Du kan slå av oppretting av en git.properties fil:

falsk

3.6. Egenskapers prefiks

Hvis du vil spesifisere et tilpasset egenskapsprefiks, bruk:

git

3.7. Bare for foreldreregister

Når du arbeider med prosjekt med undermoduler, sørger det for å sette dette flagget for at plugin fungerer bare for overordnet depot:

ekte

3.8. Utestenging av egenskaper

Det kan være lurt å ekskludere sensitive data som brukerinformasjon for depot:

 git.user. * 

3.9. Egenskaper Inkludering

Inkludering av bare spesifiserte data er også mulig:

 git.commit.id 

4. Eksempel på applikasjon

La oss lage en REST-kontroller som vil returnere grunnleggende informasjon om prosjektet vårt.

Vi vil lage prøveappen ved hjelp av Spring Boot. Hvis du ikke vet hvordan du konfigurerer en Spring Boot-applikasjon, kan du se innledende artikkel: Konfigurer en Spring Boot Web Application.

Appen vår vil bestå av to klasser: applikasjon og CommitIdController

4.1. applikasjon

CommitIdApplication vil tjene som en grunn til søknaden vår:

@SpringBootApplication (scanBasePackages = {"com.baeldung.git"}) public class CommitIdApplication {public static void main (String [] args) {SpringApplication.run (CommitIdApplication.class, args); } @Bean offentlig statisk PropertySourcesPlaceholderConfigurer placeholderConfigurer () {PropertySourcesPlaceholderConfigurer propsConfig = ny PropertySourcesPlaceholderConfigurer (); propsConfig.setLocation (ny ClassPathResource ("git.properties")); propsConfig.setIgnoreResourceNotFound (true); propsConfig.setIgnoreUnresolvablePlaceholders (true); retur rekvisitterConfig; }}

Foruten å konfigurere roten til applikasjonen vår, opprettet vi PropertyPlaceHolderConfigurer bean slik at vi har tilgang til egenskapsfilen som er generert av pluginet.

Vi setter også noen flagg, slik at applikasjonen vil kjøre greit selv om Spring ikke kunne løse git.properties fil.

4.2. Kontroller

@RestController offentlig klasse CommitInfoController {@Value ("$ {git.commit.message.short}") private String commitMessage; @Value ("$ {git.branch}") privat strenggren; @Value ("$ {git.commit.id}") privat streng commitId; @RequestMapping ("/ commitId") offentlig Kart getCommitId () {Kartresultat = nytt HashMap (); result.put ("Commit message", commitMessage); result.put ("Commit branch", gren); result.put ("Commit id", commitId); returresultat; }}

Som du ser, injiserer vi Git-egenskaper i klassefeltene.

For å se alle tilgjengelige eiendommer se git.properties fil eller forfatterens Github-side. Vi opprettet også et enkelt endepunkt som på HTTP GET-forespørsel vil svare med en JSON inneholder injiserte verdier.

4.3. Maven-oppføring

Vi setter først opp kjøringstrinnene som skal utføres av pluginet, pluss alle andre konfigurasjonsegenskaper som vi anser nyttige:

 pl.project13.maven git-commit-id-plugin 2.2.1 get-the-git-infos revision validere-the-git-infos validateRevision 

For at koden vår skal fungere ordentlig, må vi ende opp med en git.properties arkiv i klassestien vår. For å oppnå dette har vi to alternativer.

Den første er å la det være opp til pluginet for å generere filen. Vi kan spesifisere dette ved å sette generereGitPropertiesFile konfigurasjonsegenskap a ekte verdi:

 ekte 

Det andre alternativet er å inkludere en git.properties fil i ressursmappen selv. Vi kan bare inkludere oppføringene vi bruker i prosjektet vårt:

# git.properties git.tags = $ {git.tags} git.branch = $ {git.branch} git.dirty = $ {git.dirty} git.remote.origin.url = $ {git.remote.origin. url} git.commit.id = $ {git.commit.id} git.commit.id.abbrev = $ {git.commit.id.abbrev} git.commit.id.desribe = $ {git.commit.id. beskriv} git.commit.id.describe-short = $ {git.commit.id.describe-short} git.commit.user.name = $ {git.commit.user.name} git.commit.user.email = $ {git.commit.user.email} git.commit.message.full = $ {git.commit.message.full} git.commit.message.short = $ {git.commit.message.short} git.commit. tid = $ {git.commit.time} git.closest.tag.name = $ {git.closest.tag.name} git.closest.tag.commit.count = $ {git.closest.tag.commit.count} git.build.user.name = $ {git.build.user.name} git.build.user.email = $ {git.build.user.email} git.build.time = $ {git.build.time} git.build.host = $ {git.build.host} git.build.version = $ {git.build.version}

Maven vil erstatte plassholderne med passende verdier.

Merk: Noen IDEer fungerer ikke bra med dette pluginet, og kan kaste en "sirkulær plassholderreferanse" feil på bootstrap når vi definerer egenskapene som vi gjorde ovenfor.

Etter oppstart og forespørsel localhost: 8080 / commitId du kan se en JSON-fil med en struktur som ligner på følgende:

{"Commit id": "7adb64f1800f8a84c35fef9e5d15c10ab8ecffa6", "Commit branch": "commit_id_plugin", "Commit message": "Slå sammen gren 'master' til commit_id_plugin"}

5. Integrasjon med fjærstartsaktuator

Du kan enkelt bruke pluginet med Spring Actuator.

Som du kan lese i dokumentasjonen, GitInfoContributor vil plukke git.properties arkivere hvis tilgjengelig. Så, med standard plugin-konfigurasjon, vil Git-informasjon returneres når du ringer / info sluttpunkt:

{"git": {"branch": "commit_id_plugin", "commit": {"id": "7adb64f", "time": "2016-08-17T19: 30: 34 + 0200"}}}

6. Konklusjon

I denne opplæringen viste vi det grunnleggende om å bruke maven-git-commit-id-plugin og opprettet en enkel Spring Boot-applikasjon, som bruker egenskaper generert av plugin.

Presentert konfigurasjon dekker ikke alle tilgjengelige flagg og attributter, men dekker alle grunnleggende ting som er nødvendige for å begynne å jobbe med dette programtillegget.

Du kan finne kodeeksempler på Github.