Usando as propriedades do Maven settings.xml dentro do contexto Spring

Eu tenho um Mavensettings.xml arquivo na minha~/.m2 diretório; Se parece com isso:

<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>

Eu gostaria de usar essas propriedades duas vezes

Uma vez dentro do Mavenintegration-test fase para configurar e derrubar meu banco de dados. Usando a filtragem Maven, isso está funcionando perfeitamente.Uma segunda vez ao executar o meu aplicativo Spring, o que significa que eu preciso substituir essas propriedades no meuservlet-context.xml arquivo durante Mavenresources:resources Estágio. Para propriedades na seção superior dosettings.xml, tal como${db.url}Isso funciona bem.Não consigo descobrir como substituir o nome de usuário do meu banco de dados e a senha (descriptografada) no Springservlet-context.xml Arquivo.

A parte pertinente do meuservlet-context.xml arquivo se parece com:

<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>

O objetivo final aqui é que cada desenvolvedor tenha suas próprias configurações do Maven (e banco de dados em sua própria máquina para testes de integração) ... E uma configuração semelhante no servidor Jenkins. Nós não queremos compartilhar um nome de usuário / senha / etc comum.

questionAnswers(3)

yourAnswerToTheQuestion