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.