如何使用Maven Profile Name作为变量

时间:2016-01-06 20:15:28

标签: java maven profiles

我需要构建一个可以调用JDBC连接的war文件,具体取决于它的配置文件名称。

当我使用dev配置文件构建时,我需要它来调用dev.properties文件。当我使用prod配置文件构建时,我需要它从prod.properties文件中读取。

我提出的想法是以某种方式使用配置文件名称作为变量,但我无法弄清楚如何做到这一点。

POM.XML

<profile>
    <id>dev</id>
    <activation>
        <activeByDefault>true</activeByDefault>
    </activation>
    <properties>
        <profile-id>dev</profile-id>
    </properties>
</profile>
<profile>
    <id>prod</id>
    <properties>
        <profile-id>prod</profile-id>
    </properties>
</profile>

servlet的context.xml中

<bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
    <property name="location">
        <value>classpath:${profile-id}.properties</value>
    </property>
</bean>
<property name="dataSourceProperties">
    <props>                 
        <prop key="url" >${jdbc}</prop>
        <prop key="user">user</prop>
        <prop key="password">password</prop>    
        <prop key="implicitCachingEnabled">true</prop>          
    </props>
</property>

1 个答案:

答案 0 :(得分:2)

您必须使用maven的过滤概念。见http://maven.apache.org/plugins/maven-resources-plugin/examples/filter.html

添加到您的pom中:

  <resource>
    <directory>directory.to.servlet/servlet-context.xml</directory>
    <filtering>true</filtering>
  </resource>

将directory.to.servlet替换为真实目录