我很難理解maven構建配置文件。maven - spring項目構建配置文件
基本上我的配置文件目錄的結構是這樣的
src/main/resources/profiles/dev/database.properties
src/main/resources/profiles/test/database.properties
我有這個配置在我的pom.xml
<build>
...
<filters>
<filter>src/main/resources/profiles/${build.profile.id}/database.properties</filter>
</filters>
<resources>
<resource>
<filtering>true</filtering>
<directory>src/main/resources/</directory>
</resource>
</resources>
</build>
<profiles>
<profile>
<id>dev</id>
<activation>
<activeByDefault>true</activeByDefault>
</activation>
<properties>
<build.profile.id>dev</build.profile.id>
</properties>
</profile>
<profile>
<id>test</id>
<properties>
<build.profile.id>test</build.profile.id>
</properties>
</profile>
</profiles>
然後在我的基於Java的數據源配置:
@Configuration
@PropertySource("classpath:profiles/${spring.profiles.active}/database.properties")
當我運行我的應用程序時,我把虛擬變量參數-Dspring.profiles.active=test
所以它會加載在配置文件/測試下的e database.properties
。然後,突然間我意識到,如果沒有我在pom.xml中添加的配置,我可以做到這一點。即使我不需要我的pom.xml中的配置,這仍然是正確的構建配置文件的實施?
更新:這是我的分辨率 現在我明白了使用Maven型材的,我所做的是創建將舉行基於主動輪廓結構中另一層。本是正確的,我正在混合春天配置文件與maven配置文件。
我已經創造了另一個文件database.properties資源下,與此內容:
db.driver=${db.driver}
db.url=${db.url}
db.username=${db.username}
db.password=${db.password}
現在我的數據源配置只指的是新的圖層不知道哪個配置文件被激活,因爲Maven會編譯過程中解決此時間。
@Configuration
@PropertySource("classpath:database.properties")
在任何情況下,您都不需要對Maven配置文件做任何事情?我以爲maven是爲build時間? – fuzzy28
你能建議我如何實現我的目標,當我想爲兩個不同的數據庫連接有兩個單獨的db.properties文件時。 – fuzzy28
個人而言,假設使用Spring Boot(我強烈推薦),我只需要在我的application.properties文件中包含連接字符串信息,並且對於src/main中的所有配置文件,我都擁有相同的配置/ resources/application.properties'然後我會在'/ src/main/resources/application-dev.properties'和'src/main/resources/application-test.properties'中設置特定於配置文件的數據庫連接屬性 – Ben