我的目录中有一个 Mavensettings.xml
文件~/.m2
;它看起来像这样:
<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>
我想使用这些属性两次
- 一旦进入 Maven
integration-test
阶段,就可以设置和拆除我的数据库。使用 Maven 过滤,这是完美的工作。 - 第二次运行我的 Spring 应用程序时,这意味着我需要
servlet-context.xml
在 Mavenresources:resources
阶段将这些属性替换到我的文件中。对于 上部的属性settings.xml
,例如${db.url}
,这工作正常。 我不知道如何将我的数据库用户名和(解密的)密码替换为 Springservlet-context.xml
文件。
servlet-context.xml
我的文件的相关部分如下所示:
<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>
这里的最终目标是让每个开发人员拥有自己的 Maven 设置(以及在他们自己的机器上用于集成测试的数据库)......以及 Jenkins 服务器上的类似设置。我们不想共享一个共同的用户名/密码/等。