Voeg Build-eigenschappen toe aan een Spring Boot-toepassing

1. Inleiding

Gewoonlijk bevat de buildconfiguratie van ons project nogal wat informatie over onze applicatie. Een deel van deze informatie kan nodig zijn in de applicatie zelf. Dus in plaats van deze informatie hard te coderen, kunnen we deze gebruiken vanuit de bestaande buildconfiguratie.

In dit artikel zullen we zien hoe u informatie uit de buildconfiguratie van het project in een Spring Boot-applicatie kunt gebruiken.

2. De build-informatie

Stel dat we de beschrijving en versie van de applicatie op de startpagina van onze website willen weergeven.

Meestal is deze informatie aanwezig in pom.xml:

 4.0.0 spring-boot spring-boot war Dit is een eenvoudige opstarttoepassing voor Spring boot-actuatortest 0.0.1-SNAPSHOT ... 

3. Verwijzen naar de informatie in het bestand met applicatie-eigenschappen

Om de bovenstaande informatie in onze applicatie te gebruiken, moeten we er eerst naar verwijzen in een van onze applicatie-eigenschappenbestanden:

[e-mail beschermd] @ [e-mail beschermd] @

Hier hebben we de waarde van het gebouwde eigendom gebruikt project.description om de applicatie-eigenschap in te stellen applicatie-beschrijving. Evenzo applicatie versie wordt ingesteld met project.version.

Het belangrijkste deel hier is het gebruik van de @ teken rond de eigenschapsnaam. Dit vertelt Spring om de benoemde eigenschap uit het Maven-project uit te breiden.

Nu, wanneer we ons project bouwen, zullen deze eigenschappen worden vervangen door hun waarden van pom.xml.

Deze uitbreiding wordt ook wel bronfiltering genoemd. Het is vermeldenswaard dat dit soort filtering alleen wordt toegepast op de productieconfiguratie. Daarom kunnen we de build-eigenschappen in de bestanden onder src / test / resources.

Een ander ding om op te merken is dat als we de addResources vlag, de spring-boot: rennen doel voegt toe src / main / resources rechtstreeks naar het klassenpad. Hoewel dit handig is voor hete herlaaddoeleinden, omzeilt het het filteren van bronnen en bijgevolg ook deze functie.

Nu, de bovenstaande eigendomsuitbreiding werkt alleen out-of-the-box als we gebruik maken van spring-boot-starter-parent.

3.1. Eigenschappen uitbreiden zonder spring-boot-starter-parent

Laten we eens kijken hoe we deze functie kunnen inschakelen zonder de spring-boot-starter-parent afhankelijkheid.

Ten eerste moeten we resource filtering inschakelen binnen het element in onze pom.xml:

  src / main / resources true 

Hier hebben we resource filtering ingeschakeld onder src / main / resources enkel en alleen.

Vervolgens kunnen we de configuratie van het scheidingsteken voor het maven-resources-plugin:

 org.apache.maven.plugins maven-resources-plugin @ false 

Merk op dat we de useDefaultDelimiters eigendom als false. Dit zorgt ervoor dat de standaard tijdelijke aanduidingen voor Spring, zoals $ {placeholder}, niet worden uitgevouwen door de build.

4. Met behulp van de build-informatie in YAML-bestanden

Als we YAML gebruiken om applicatie-eigenschappen op te slaan, we kunnen mogelijk niet gebruiken @ om de build-eigenschappen op te geven. Dit is zo omdat @ is een gereserveerd karakter in YAML.

Maar we kunnen dit met beide overwinnen een ander scheidingsteken configureren in maven-resources-plugin:

 org.apache.maven.plugins maven-resources-plugin ^ false 

Of gewoon door het negeren van de resource.delimiter eigenschap in het eigenschappenblok van onze pom.xml:

 ^ 

Dan kunnen we gebruiken ^ in ons YAML-bestand:

applicatie-beschrijving: ^ project.description ^ applicatie-versie: ^ project.version ^

5. Conclusie

In dit artikel hebben we gezien hoe we Maven-projectinformatie in onze applicatie konden gebruiken. Dit kan ons helpen om te voorkomen dat de informatie die al aanwezig is in de configuratie van het project, in onze applicatie-eigenschappenbestanden wordt gecodeerd.

En natuurlijk is de code die bij deze tutorial hoort, te vinden op GitHub.