Java SpringBoot maven使用特定的application.properties构建war

Java SpringBoot maven使用特定的application.properties构建war,java,spring,maven,spring-boot,Java,Spring,Maven,Spring Boot,我有一个Spring Boot应用程序,它有三个应用程序。属性文件: 应用程序属性 应用程序-qa.properties application-prod.properties 我想使用maven构建一个war,具体取决于应用程序部署的环境,即dev、qa或prod 我怎样才能做到这一点。我对Spring Boot非常陌生。设置Spring\u PROFILES\u ACTIVE环境变量将激活所需的配置文件。例如,要激活qa配置文件,请将SPRING\u PROFILES\u ACTIVE环境变

我有一个Spring Boot应用程序,它有三个
应用程序。属性
文件:

  • 应用程序属性
  • 应用程序-qa.properties
  • application-prod.properties
  • 我想使用maven构建一个war,具体取决于应用程序部署的环境,即
    dev
    qa
    prod


    我怎样才能做到这一点。我对Spring Boot非常陌生。

    设置
    Spring\u PROFILES\u ACTIVE
    环境变量将激活所需的配置文件。例如,要激活
    qa
    配置文件,请将
    SPRING\u PROFILES\u ACTIVE
    环境变量设置为
    qa
    。阅读Spring引导文档中有关配置文件特定属性的更多信息。

    1。Aproach

    在Linux环境中

    export SPRING_PROFILES_ACTIVE=qa 
    
    您可以使用以下命令检查它是否在操作系统上设置:

    $ env
    
    之后,您可以运行:

    ./gradlew bootRun
    
    因此,您在启动时可以看到这一行:

    2018-05-17 17:33:21.722  INFO 8245 --- [main] 
    b.j.t.d.InteropDocumentosApplication     : The following profiles are active: qa
    
    2.Aproach

    通过gradle构建:

    在应用程序属性上

    spring.profiles.active=@activeProfile@
    
    build.gradle上

    import org.apache.tools.ant.filters.ReplaceTokens
    
    processResources {
         filter ReplaceTokens, tokens: [ 
                 activeProfile: project.property('activeProfile')
         ]
    }
    
    您可以使用名为activeProfile的属性。因此,在运行构建时,必须提供qa值:

    ./gradlew build -PactiveProfile=qa
    

    我有一台windows机器,我确实将环境变量SPRING_PROFILES_ACTIVE设置为qa。但是当我在tomcat中运行应用程序时,它仍然使用application.properties文件中的值?不,我右键单击了我的计算机->属性->高级系统属性->环境变量。我需要使用set命令设置它吗?我也尝试使用命令行设置它:setx SPRING_PROFILES_ACTIVE qa。它仍然从application.properties加载值:(?将
    application.properties
    中的
    spring.profiles.default
    设置为您想要的配置文件,然后构建项目您不想为每个环境构建war,因为您想升级测试的二进制文件。您不想仅仅因为需要移动到不同的环境而进行重建。如果这样做,您基本上会e重新测试,因为它是一个新的二进制文件。。。