Legg Byggegenskaper til en Spring Boot-applikasjon
1. Introduksjon
Vanligvis inneholder prosjektets byggekonfigurasjon ganske mye informasjon om applikasjonen vår. Noe av denne informasjonen kan være nødvendig i selve applikasjonen. Så i stedet for å hardkode denne informasjonen, kan vi bruke den fra den eksisterende byggekonfigurasjonen.
I denne artikkelen får vi se hvordan du bruker informasjon fra prosjektets byggekonfigurasjon i en Spring Boot-applikasjon.
2. Bygginformasjonen
La oss si at vi vil vise programbeskrivelsen og versjonen på hjemmesiden til hjemmesiden vår.
Vanligvis er denne informasjonen til stede i pom.xml:
4.0.0 spring-boot spring-boot war Dette er enkel oppstartsapplikasjon for Spring boot actuator test 0.0.1-SNAPSHOT ...
3. Henvisning til informasjonen i programegenskapsfilen
For å bruke informasjonen ovenfor i applikasjonen vår, må vi først referere den til en av filene for applikasjonsegenskaper:
[e-postbeskyttet] @ [e-postbeskyttet] @
Her har vi brukt verdien av byggeeiendommen Prosjektbeskrivelse for å angi applikasjonsegenskapen applikasjonsbeskrivelse. På samme måte, applikasjonsversjon er satt med prosjekt.versjon.
Den viktigste biten her er bruken av @ karakter rundt eiendomsnavnet. Dette forteller Spring om å utvide den navngitte eiendommen fra Maven-prosjektet.
Nå, når vi bygger prosjektet vårt, vil disse egenskapene erstattes med verdiene fra pom.xml.
Denne utvidelsen blir også referert til som ressursfiltrering. Det er verdt å merke seg at denne typen filtrering bare brukes på produksjonskonfigurasjonen. Derfor kan vi ikke bruke byggeegenskapene i filene under src / test / ressurser.
En annen ting å merke seg er at hvis vi bruker addResources flagg, den spring-boot: løp mål legger til src / main / resources direkte til klassestien. Selv om dette er nyttig for varmelastingsformål, omgår det ressursfiltrering og følgelig også denne funksjonen.
Nå, Ovennevnte eiendomsutvidelse fungerer bare utenom boksen hvis vi bruker spring-boot-starter-parent.
3.1. Utvide eiendommer uten spring-boot-starter-parent
La oss se hvordan vi kan aktivere denne funksjonen uten å bruke spring-boot-starter-parent avhengighet.
Først må vi aktivere ressursfiltrering inne i element i vår pom.xml:
src / main / resources true
Her har vi aktivert ressursfiltrering under src / main / resources kun.
Deretter kan vi legge til avgrensningskonfigurasjonen for maven-resources-plugin:
org.apache.maven.plugins maven-resources-plugin @ false
Merk at vi har spesifisert useDefaultDelimiters eiendom som falsk. Dette sikrer at standard Spring-plassholdere som $ {placeholder} ikke utvides av bygningen.
4. Bruke byggeinformasjonen i YAML-filer
Hvis vi bruker YAML til å lagre applikasjonsegenskaper, vi kan kanskje ikke bruke @ for å spesifisere byggeegenskapene. Dette er fordi @ er en reservert karakter i YAML.
Men vi kan overvinne dette av begge konfigurere en annen avgrenser i maven-resources-plugin:
org.apache.maven.plugins maven-resources-plugin ^ false
Eller bare ved overordnet resource.delimiter eiendom i eiendomsblokken av vår pom.xml:
^
Så kan vi bruke ^ i vår YAML-fil:
applikasjonsbeskrivelse: ^ prosjektbeskrivelse ^ applikasjonsversjon: ^ prosjektversjon ^
5. Konklusjon
I denne artikkelen så vi hvordan vi kunne bruke Maven-prosjektinformasjon i applikasjonen vår. Dette kan hjelpe oss med å unngå hardkoding av informasjonen som allerede er tilstede i prosjektbyggingskonfigurasjonen i applikasjonsegenskapefilene.
Og selvfølgelig kan koden som følger med denne opplæringen, bli funnet på GitHub.