如何使用 Maven 配置文件名称作为变量

How to use Maven Profile Name as a variable

我需要构建一个 war 文件,该文件可以根据其配置文件名称调用 JDBC 连接。

当我使用开发配置文件构建时,我需要它来调用 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>

你必须使用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