Injektion af gitinformation i foråret

1. Oversigt

I denne vejledning skal vi vise, hvordan man injicerer Git-arkivinformation i en Maven-bygget Spring Boot-baseret applikation.

For at gøre dette bruger vi maven-git-commit-id-plugin - et praktisk værktøj, der udelukkende er oprettet til dette formål.

2. Maven-afhængigheder

Lad os tilføje et plugin til en sektion af vores pom.xml fil af vores projekt:

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

Du kan finde den nyeste version her. Husk, at dette slugin kræver mindst 3.1.1 version af Maven.

3. Konfiguration

Pluginet har mange praktiske flag og attributter, der udvider dets funktionalitet. I dette afsnit vil vi kort beskrive nogle af dem. Hvis du vil lære dem alle at kende, skal du besøge maven-git-commit-id-plugins side og hvis du vil gå direkte til eksemplet, skal du gå til afsnit 4.

Følgende uddrag indeholder eksempler på pluginattributter; angiv dem i en sektion i henhold til dine behov.

3.1. Manglende lager

Du kan konfigurere det til at udelade fejl, hvis Git-lager ikke er fundet:

falsk

3.2. Git Repository placering

Hvis du vil specificere brugerdefineret .git lagerplacering, brug dotGitDirectory attribut:

$ {project.basedir} /submodule_directory/.git

3.3. Outputfil

Brug følgende afsnit for at generere egenskabsfiler med et brugerdefineret navn og / eller bibliotek:

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

3.4. Nøjagtighed

Brug mere generøs logning:

rigtigt

3.5. Egenskaber Filgenerering

Du kan slå oprettelsen af ​​en git. ejendomme fil:

falsk

3.6. Egenskabers præfiks

Hvis du vil specificere et tilpasset egenskabspræfiks, skal du bruge:

git

3.7. Kun til overordnet arkiv

Når du arbejder med projekt med undermoduler, sørger indstillingen for dette flag for, at plugin kun fungerer for det overordnede arkiv:

rigtigt

3.8. Egenskaber udelukkelse

Det kan være en god idé at ekskludere nogle følsomme data som f.eks.

 git.user. * 

3.9. Egenskaber Inkludering

Det er også muligt at medtage kun specificerede data:

 git.commit.id 

4. Eksempel på anvendelse

Lad os oprette en prøve-REST-controller, som returnerer grundlæggende oplysninger om vores projekt.

Vi opretter prøveappen ved hjælp af Spring Boot. Hvis du ikke ved, hvordan du opretter en Spring Boot-applikation, se indledende artikel: Konfigurer en Spring Boot-webapplikation.

Vores app består af 2 klasser: Ansøgning og CommitIdController

4.1. Ansøgning

CommitIdApplication vil tjene som en rod i vores ansøgning:

@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); returnere rekvisitterConfig; }}

Udover at konfigurere roden til vores applikation oprettede vi PropertyPlaceHolderConfigurer bønne, så vi er i stand til at få adgang til egenskabsfilen, der er genereret af pluginet.

Vi satte også nogle flag, så applikationen kørte problemfrit, selvom Spring ikke kunne løse problemet git. ejendomme fil.

4.2. Controller

@RestController offentlig klasse CommitInfoController {@Value ("$ {git.commit.message.short}") privat String commitMessage; @Value ("$ {git.branch}") privat strengfilial; @Value ("$ {git.commit.id}") privat streng commitId; @RequestMapping ("/ commitId") offentligt kort getCommitId () {Kortresultat = nyt HashMap (); result.put ("Commit message", commitMessage); result.put ("Forpligt filial", gren); result.put ("Commit id", commitId); returresultat }}

Som du kan se, indsprøjter vi Git-egenskaber i klassefelter.

For at se alle tilgængelige egenskaber henvises til git. ejendomme fil eller forfatterens Github-side. Vi oprettede også et simpelt slutpunkt, som på HTTP GET-anmodning vil svare med en JSON indeholdende injicerede værdier.

4.3. Maven-indgang

Vi opretter først de udførelsestrin, der skal udføres af pluginet, plus enhver anden konfigurationsegenskab, som vi anser for nyttige:

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

For at vores kode skal fungere korrekt, skal vi ende med en git.properties arkiv i vores klassesti. For at opnå dette har vi to muligheder.

Den første er at lade det være op til pluginet for at generere filen. Vi kan specificere dette ved at indstille generereGitPropertiesFile konfigurationsegenskab a rigtigt værdi:

 rigtigt 

Den anden mulighed er at inkludere en git.properties fil i ressourcemappen selv. Vi kan kun medtage de poster, som vi bruger i vores projekt:

# 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.describe = $ {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 pladsholderne med de relevante værdier.

Bemærk: Nogle IDE'er fungerer ikke godt med dette plugin og kan muligvis kaste en "cirkulær pladsholderreference" -fejl på bootstrap, når vi definerer egenskaberne som vi gjorde ovenfor.

Efter opstart og anmodning localhost: 8080 / commitId du kan se en JSON-fil med en struktur, der ligner følgende:

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

5. Integration med fjederstartsaktuator

Du kan nemt bruge pluginet med Spring Actuator.

Som du kan læse i dokumentationen, GitInfoContributor vil vælge git. ejendomme arkiver, hvis det er tilgængeligt. Så med standardkonfiguration af plugin returneres Git-oplysninger, når du ringer / info slutpunkt:

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

6. Konklusion

I denne vejledning viste vi det grundlæggende i at bruge maven-git-commit-id-plugin og oprettede en simpel Spring Boot-applikation, der gør brug af egenskaber genereret af pluginet.

Den præsenterede konfiguration dækker ikke alle tilgængelige flag og attributter, men den dækker alt det grundlæggende, der er nødvendigt for at begynde at arbejde med dette plugin.

Du kan finde kodeeksempler på Github.