mvn -P dev
如果我使用配置文件 dev 构建我的项目,那么我想在我的 spring bean 中使用 dev.properties,如下所示。可能吗 ?如果是这样,我怎么能得到个人资料名称?
<bean id="xyz" class="abc.xyz">
<property name="propertyFile" value="${maven_profile_id}.properties" />
</bean>
提前致谢。
您可以使用 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 配置文件功能可以满足您的需求(尽管它可能有点矫枉过正)。
创建一个属性文件,该文件将使用 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>