Verwenden der Eigenschaften von Maven settings.xml im Spring-Kontext

Ich habe einen Mavensettings.xml Datei in meinem~/.m2 Verzeichnis; es sieht aus wie das:

<settings>
    <profiles>
        <profile>
            <id>mike</id>
            <properties>
                <db.driver>org.postgresql.Driver</db.driver>
                <db.type>postgresql</db.type>
                <db.host>localhost</db.host>
                <db.port>5432</db.port>
                <db.url>jdbc:${db.type}://${db.host}:${db.port}/dbname</db.url>
            </properties>
        </profile>
    </profiles>
    <activeProfiles>
        <activeProfile>mike</activeProfile>
    </activeProfiles>
    <servers>
        <server>
            <id>server_id</id>
            <username>mike</username>
            <password>{some_encrypted_password}</password>
        </server>
    </servers>
</settings>

Ich möchte diese Eigenschaften zweimal verwenden

Einmal in Maven'sintegration-test Phase, um meine Datenbank einzurichten und herunterzufahren. Mit der Maven-Filterung funktioniert dies einwandfrei.Ein zweites Mal beim Ausführen meiner Spring-Anwendung. Das bedeutet, dass ich diese Eigenschaften in my ersetzen mussservlet-context.xml Datei während Mavenresources:resources Phase. Für Objekte im oberen Bereich vonsettings.xml, sowie${db.url}Das funktioniert gut.Ich kann nicht herausfinden, wie ich meinen Datenbank-Benutzernamen und mein (entschlüsseltes) Passwort in den Spring einsetzen kannservlet-context.xml Datei.

Der relevante Teil von meinemservlet-context.xml Datei sieht so aus:

<bean id="myDataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
    <property name="driverClassName"><value>${db.driver}</value></property>
    <property name="url"><value>${db.url}</value></property>
    <property name="username"><value>${username}</value></property>
    <property name="password"><value>${password}</value></property>
</bean>

Das Endziel hierbei ist, dass jeder Entwickler seine eigenen Maven-Einstellungen (und eine Datenbank auf seinem eigenen Computer für Integrationstests) hat ... und eine ähnliche Konfiguration auf dem Jenkins-Server. Wir möchten keinen gemeinsamen Benutzernamen / Passwort / etc.

Antworten auf die Frage(3)

Ihre Antwort auf die Frage