mvn -P dev
如果我使用profile dev构建我的项目,那么我想在我的spring bean中使用dev.properties,如下所示。可能吗 ?如果是这样,我怎么能获得个人资料名称?
<bean id="xyz" class="abc.xyz">
<property name="propertyFile" value="${maven_profile_id}.properties" />
</bean>
提前致谢。
答案 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>