I have a Spring application which is complete code based configured. And I am trying to combine maven profiles to setup my db connections. I defined some properties for a local, live and staging issues. Now I try to get control over maven profiles. Every profil defines my MySql db connection params. Here my current setup:
local.properties-file:
mysql.username=test
mysql.password=test
mysql.databaseUrl=jdbc:mysql://localhost:3306/test
mysql.databaseDriver=com.mysql.jdbc.Driver
pom.xml
...
<profiles>
<profile>
<id>live</id>
<activation>
<activeByDefault>false</activeByDefault>
</activation>
<properties>
<filterFile>src/main/config/live.properties</filterFile>
</properties>
</profile>
<profile>
<id>local</id>
<activation>
<activeByDefault>false</activeByDefault>
</activation>
<properties>
<filterFile>src/main/config/local.properties</filterFile>
</properties>
</profile>
<profile>
<id>staging</id>
<activation>
<activeByDefault>true</activeByDefault>
</activation>
<properties>
<filterFile>src/main/config/staging.properties</filterFile>
</properties>
</profile>
</profiles>
...
ApplicationConfig
...
@Value("${mysql.username}")
private String username;
@Bean
public DataSource dataSource() {
DriverManagerDataSource dataSource = new DriverManagerDataSource();
dataSource.setUsername(username);
..
return dataSource;
}
...
Problem here is that my properties aren't loaded!