wake-up-neo.com

Verwenden von Maven-Eigenschaften in application.properties in Spring Boot

Ich versuche, Eigenschaften aus pom.xml in application.properties zu laden. Ich möchte zwei Profile erstellen: dev und prod, um unterschiedliche Datenbank-URLs zu verwenden. Ich verwende Jenkins als CI. In allen meinen Apps (hauptsächlich Spring MVC ohne Boot-Projekt) werden Maven-Profile für die Bereitstellung auf Tomcat verwendet. Es besteht die Möglichkeit, dies mit Hilfe von Maven-Eigenschaften zu tun. Ich habe so etwas ausprobiert: spring.datasource.url=${jdbc.url}

17
Jakub Pomykała

Bevor Sie dies tun, sollten Sie die Eigenschaftendatei aus Ihrem bereitstellbaren Paket heraus externalisieren. Auf diese Weise können Sie dieselbe Kompilierung in jeder Umgebung bereitstellen. Es wird Ihren Jenkins einige Arbeit ersparen, die eigentlich unnötig ist. Die beste Vorgehensweise ist, Ihre Anwendung nur einmal zu erstellen. Wenn Sie jedoch nicht überzeugt sind, können Sie Folgendes tun:.

  1. Definieren Sie in Ihrer pom.xml die Profile mit den entsprechenden Werten für die Eigenschaft.

    <profile>
        <id>dev</id>
       <properties>
           <jdbc.url>your_dev_URL</jdbc.url>
       </properties>
    </profile>
    
  2. Richten Sie das Maven Resources Plugin ein, um das Verzeichnis zu filtern, das Ihre Datei application.properties enthält.

    <build>
        <resources>
            <resource>
                <directory>src/main/resources</directory>
                <filtering>true</filtering>
            </resource>
        </resources>
        ...
    </build>
    
  3. Wenn Sie Spring Boot 1.3 oder mehr verwenden, sollten Sie sich der Tatsache bewusst sein, dass zur Vermeidung von Konflikten zwischen Spring Boot-Platzhaltern und Token, die vom Maven Resources Plugin gefiltert werden, das Framework eine Lösung einführt, die die Verwendung einer anderen Syntax zum Filtern erfordert Werte.

    Statt ${property.key} sollten Sie @[email protected] verwenden. In diesem Fall muss Ihre application.properties das folgende Beispiel enthalten, um wie erwartet zu funktionieren:

    [email protected]@
    

Sie können auch einen Beitrag über Trennen von Spring-Eigenschaftendateien für verschiedene Maven-Profile auschecken. Auf diese Weise externalisieren Sie die Werte aus Ihrer pom.xml.

43

Natürlich gibt es. Verwenden Sie einfach Maven Filtering über Ihrer application.properties Datei und Maven schreibt Ihre profilspezifischen Werte in die Datei.

Sie müssen jedoch verstehen, dass Maven-Profile zur Laufzeit ausgeführt werden, während Spring Boot-Profile zur Laufzeit ausgeführt werden. Mit anderen Worten, mit Maven-Profilen erhalten Sie profilspezifische unveränderliche Builds, während Sie bei Verwendung der Spring Boot-Profile die Anwendungskonfiguration jedes Mal ändern können, bevor Sie sie starten, oder auch während sie ausgeführt wird =.

Siehe auch:

1
Xtreme Biker