我在我的~/.m2
目錄中有一個Maven settings.xml
文件;它看起來像這樣:在Spring環境中使用Maven settings.xml屬性
<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應用程序時,這意味着我需要在Maven的
resources:resources
階段將這些屬性替換爲我的servlet-context.xml
文件。對於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服務器上的類似設置。我們不想分享一個共同的用戶名/密碼/等。
關於重新編譯的那一點是有效的。我肯定會更多地考慮這個問題,因爲這是我希望避免的一種反模式。絕對需要這個以CI/CD風格運行。但同時,我試圖重新使用已存在的信息並存儲在'設置中。xml' – Mike
好吧,這是非常好的,你要重構這個。就目前而言,正如我所說的,使用這個網頁資源過濾。正如你所說,它應該能夠工作並使您能夠在一個地方進行配置。 –
Spring 3.1爲這種類型的場景引入了一些新東西:http://blog.springsource.org/2011/02/15/spring-3-1-m1-unified-property-management/ – artbristol