Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何从Maven属性获取Spring中@PropertySource的文件位置_Java_Spring_Maven - Fatal编程技术网

Java 如何从Maven属性获取Spring中@PropertySource的文件位置

Java 如何从Maven属性获取Spring中@PropertySource的文件位置,java,spring,maven,Java,Spring,Maven,我在参考资料文件夹中存储了两个属性文件:qa.properties和dev.properties 我指定了Maven属性“environment”,这是应该加载的属性文件的名称 <properties> <environment>qa</environment> </properties> 也许您可以为此使用特定于配置文件的属性,如application qa.properties,并使用spring.profiles.act

我在参考资料文件夹中存储了两个属性文件:qa.properties和dev.properties

我指定了Maven属性“environment”,这是应该加载的属性文件的名称

 <properties>
        <environment>qa</environment>
 </properties>

也许您可以为此使用特定于配置文件的属性,如
application qa.properties
,并使用
spring.profiles.active=qa
在application.properties中激活它。这里有更多的不要在构建时使用
Maven
属性来执行此操作。这种方法迫使您为每个环境构建一个工件,这不是一个好的实践

更好的方法是只构建一个工件和/或应用程序以部署在任何环境中(qa、阶段、负载测试、产品等)

一种方法是将属性文件命名为
application test.properties
application-xxxxx.properties
,并以以下方式运行应用程序:

java-Dspring.profiles.active=qa myapp.jar

如果遵循此方法,则不需要前面描述的
Config


这应该让你开始。请注意,您必须包含不同环境的属性文件,但这也可以解决。查看。

为此,必须将环境属性指定为系统属性。Maven Surefire插件可以帮助您:

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-surefire-plugin</artifactId>
    <version>${surefire.version}</version>
    <configuration>
        <systemPropertyVariables>
            <environment>QA</environment>
        </systemPropertyVariables>
    </configuration>
</plugin>

org.apache.maven.plugins
maven surefire插件
${surefire.version}
质量保证

你没有。Maven属性是在构建时生成的。Spring是运行时的。您需要让您的构建在一个公共名称上部署一个不同的文件以供Spring查看。您应该了解Spring提供的功能,这将允许您根据活动概要文件有条件地实例化bean。目前,我使用Spring概要文件特定的属性实现了逻辑。当我使用以下命令指定概要文件时,它可以正常工作:-Dspring.profiles.active=qa。但当未指定配置文件时,将使用默认配置文件。如何将默认配置文件指定为每次不写入-Dspring.profiles.active=qa?您可以将
spring.profiles.active=qa
添加到
bootstrap.properties
中,我将spring.profiles.active=@environment@添加到application.properties中,现在我的应用程序使用Maven“environment”属性中指定的配置文件运行来自Maven的默认环境,从Maven传递值是有争议的。但是,如果您想在另一个环境中运行同一个应用程序,您可以使用-Dspring.profiles.active=stage,而无需再次编译和生成另一个二进制文件。
<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-surefire-plugin</artifactId>
    <version>${surefire.version}</version>
    <configuration>
        <systemPropertyVariables>
            <environment>QA</environment>
        </systemPropertyVariables>
    </configuration>
</plugin>