如何在spring bean文件中使用maven profile Id值?

时间:2012-09-25 10:34:35

标签: spring maven

mvn -P dev

如果我使用profile dev构建我的项目,那么我想在我的spring bean中使用dev.properties,如下所示。可能吗 ?如果是这样,我怎么能获得个人资料名称?

<bean id="xyz" class="abc.xyz">
    <property name="propertyFile" value="${maven_profile_id}.properties" />
</bean>

提前致谢。

2 个答案:

答案 0 :(得分:1)

您可以使用Maven配置文件向构建添加“配置文件”属性:

<profiles>
    <profile>
        <id>dev</id>
        <properties>
            <profile>dev</profile>
        </properties>
    </profile>
</profiles>

然后使用系统属性将值传递给您的应用程序,这是一个使用surefire的示例:

<plugin>
    <artifactId>maven-surefire-plugin</artifactId>
    <configuration>
        <systemPropertyVariables>
            <profile>${profile}</profile>
        </systemPropertyVariables>
    </configuration>
</plugin>

最后,您可以在应用程序中引用它:

<bean id="xyz" class="abc.xyz">
    <property name="propertyFile" value="${profile}.properties" />
</bean>

或者,如果您使用的是Spring 3.1或更高版本,您可能会发现XML profile功能符合您的需求(尽管它可能有点过分)。

答案 1 :(得分:0)

创建一个属性文件,该文件将使用Maven的资源过滤进行填充,该过滤指定您在构建时使用的配置文件。

build.properties

activatedProfile=${profileId}

pom.xml(您无需过滤整个目录,根据需要进行自定义)

 <build>
    <resources>
        <resource>
            <directory>src/main/resources</directory>
            <filtering>true</filtering>
        </resource>
    <resources>
 </build>   

在每个不同的个人资料下添加profileId(或任何您想要的名称)属性:

 <profile>
     <id>dev</id>
     <properties>
        <profileId>dev</profileId>
     </properties>
 </profile>
 <profile>
     <id>qa</id>
     <properties>
        <profileId>qa</profileId>
     </properties>
 </profile>

然后,您可以使用${activatedProfile}.properties作为bean的值

<bean id="xyz" class="abc.xyz">
    <property name="propertyFile" value="${activatedProfile}.properties" />
</bean>