1
mvn -P dev

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

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

提前致谢。

4

2 回答 2

1

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

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

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

<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 配置文件功能可以满足您的需求(尽管它可能有点矫枉过正)。

于 2012-09-25T11:31:47.893 回答
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>
于 2012-09-25T11:02:45.823 回答