Hinzufügen von Build-Eigenschaften zu einer Spring Boot-Anwendung

1. Einleitung

Normalerweise enthält die Build-Konfiguration unseres Projekts viele Informationen zu unserer Anwendung. Einige dieser Informationen werden möglicherweise in der Anwendung selbst benötigt. Anstatt diese Informationen fest zu codieren, können wir sie aus der vorhandenen Build-Konfiguration verwenden.

In diesem Artikel erfahren Sie, wie Sie Informationen aus der Build-Konfiguration des Projekts in einer Spring Boot-Anwendung verwenden.

2. Die Build-Informationen

Angenommen, wir möchten die Anwendungsbeschreibung und -version auf der Homepage unserer Website anzeigen.

Normalerweise sind diese Informationen in pom.xml enthalten :

 4.0.0 spring-boot spring-boot war This is simple boot application for Spring boot actuator test 0.0.1-SNAPSHOT ... 

3. Verweisen auf die Informationen in der Anwendungseigenschaftendatei

Um die oben genannten Informationen in unserer Anwendung zu verwenden, müssen wir sie zunächst in einer unserer Anwendungseigenschaftendateien referenzieren:

[email protected]@ [email protected]@

Hier haben wir den Wert der Build - Eigenschaft verwendet project.description die Anwendung Eigenschaft festlegen Anwendungsbeschreibung . Ebenso wird die Anwendungsversion mit project.version festgelegt .

Das wichtigste Bit hier ist die Verwendung des @ -Zeichens um den Eigenschaftsnamen. Dies weist Spring an, die benannte Eigenschaft aus dem Maven-Projekt zu erweitern.

Wenn wir jetzt unser Projekt erstellen, werden diese Eigenschaften durch ihre Werte aus pom.xml ersetzt .

Diese Erweiterung wird auch als Ressourcenfilterung bezeichnet. Es ist erwähnenswert, dass diese Art der Filterung nur auf die Produktionskonfiguration angewendet wird . Folglich können wir die Build-Eigenschaften in den Dateien unter src / test / resources nicht verwenden .

Wenn Sie das Flag addResources verwenden, fügt das Ziel spring-boot: run src / main / resources direkt zum Klassenpfad hinzu. Dies ist zwar für das Hot-Reloading nützlich, umgeht jedoch die Ressourcenfilterung und folglich auch diese Funktion.

Jetzt funktioniert die obige Eigenschaftserweiterung nur dann sofort, wenn wir Spring-Boot-Starter-Parent verwenden .

3.1. Erweitern von Eigenschaften Ohne Spring-Boot-Starter-Parent

Mal sehen, wie wir diese Funktion aktivieren können, ohne die Spring-Boot-Starter-Parent- Abhängigkeit zu verwenden.

Zuerst müssen wir die Ressourcenfilterung innerhalb der aktivieren Element in unserer pom.xml :

  src/main/resources true  

Hier haben wir die Ressourcenfilterung nur unter src / main / resources aktiviert .

Dann können wir die Trennzeichen-Konfiguration für das Maven-Resources-Plugin hinzufügen :

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

Beachten Sie, dass wir die useDefaultDelimiters- Eigenschaft als false angegeben haben . Dadurch wird sichergestellt, dass die Standard-Spring-Platzhalter wie $ {Platzhalter} nicht durch den Build erweitert werden.

4. Verwenden der Build-Informationen in YAML-Dateien

Wenn wir YAML zum Speichern von Anwendungseigenschaften verwenden, können wir @ möglicherweise nicht zum Angeben der Build-Eigenschaften verwenden . Dies liegt daran, dass @ ein reserviertes Zeichen in YAML ist.

Wir können dies jedoch überwinden, indem wir entweder ein anderes Trennzeichen im Maven-Resources-Plugin konfigurieren :

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

Oder einfach durch Überschreiben der resource.delimiter- Eigenschaft im Eigenschaftenblock unserer pom.xml :

 ^ 

Dann können wir ^ in unserer YAML-Datei verwenden:

application-description: ^project.description^ application-version: ^project.version^

5. Schlussfolgerung

In diesem Artikel haben wir gesehen, wie wir Maven-Projektinformationen in unserer Anwendung verwenden können. Dies kann uns helfen, die Hardcodierung der Informationen zu vermeiden, die bereits in der Projektbuildkonfiguration in unseren Anwendungseigenschaftendateien vorhanden sind.

Und natürlich ist der Code, der diesem Tutorial beiliegt, auf GitHub zu finden.