java - Spring application properties profile with war file -


i trying package project in .war tomcat server deployment. need ability use application.properties or application-dev.properties or appliation-qa.properties or application-prod.properties. running project embeded servlet able specify via command line 1 want use, but, project uses application.properties when package .war.

i use following commands run project locally:

  1. mvn spring-boot:run
  2. mvn spring-boot:run -drun.arguments="--spring.profiles.active=dev"

and command package project though bamboo deployment:

  • mvn package -dspring.profiles.active=qa


application.java

    package com.pandera.wilson;      import org.springframework.boot.springapplication;     import org.springframework.boot.autoconfigure.springbootapplication;     import org.springframework.boot.builder.springapplicationbuilder;     import org.springframework.boot.context.web.springbootservletinitializer;     import org.springframework.context.annotation.componentscan;     import org.springframework.core.env.abstractenvironment;     import org.springframework.scheduling.annotation.enableasync;     import org.springframework.scheduling.annotation.enablescheduling;      import javax.servlet.servletcontext;     import javax.servlet.servletexception;      import org.apache.log4j.logger;      /**      * @author gaurav kataria      * @author austin nicholas      * @category application      */      @springbootapplication     @componentscan(basepackages = { "com.pandera.wilson" })     @enableasync     public class application extends springbootservletinitializer {          static final logger logger = logger.getlogger(application.class);          public static void main(string[] args) throws exception {              logger.info("entering application");             springapplication.run(application.class, args);         }          @override         protected springapplicationbuilder configure(springapplicationbuilder application) {             return application.sources(application.class);         }      } 


pom.xml

    <?xml version="1.0" encoding="utf-8"?>     <project xmlns="http://maven.apache.org/pom/4.0.0" xmlns:xsi="http://www.w3.org/2001/xmlschema-instance"         xsi:schemalocation="http://maven.apache.org/pom/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">         <modelversion>4.0.0</modelversion>          <groupid>org.springframework</groupid>         <artifactid>wilson</artifactid>         <version>3.0.1</version>          <packaging>war</packaging>          <properties>             <java.version>1.8</java.version>             <start-class>com.pandera.wilson.application</start-class>         </properties>          <parent>             <groupid>org.springframework.boot</groupid>             <artifactid>spring-boot-starter-parent</artifactid>             <version>1.3.6.release</version>         </parent>          <build>             <finalname>wilson-services</finalname>             <plugins>                 <plugin>                     <groupid>org.springframework.boot</groupid>                     <artifactid>spring-boot-maven-plugin</artifactid>                 </plugin>             </plugins>         </build>          <dependencies>              <dependency>                 <groupid>org.springframework.boot</groupid>                 <artifactid>spring-boot-starter-web</artifactid>                 <exclusions>                     <exclusion>                         <groupid>org.springframework.boot</groupid>                         <artifactid>spring-boot-starter-logging</artifactid>                     </exclusion>                     <exclusion>                         <groupid>org.slf4j</groupid>                         <artifactid>slf4j-log4j12</artifactid>                     </exclusion>                 </exclusions>             </dependency>              <dependency>                 <groupid>org.springframework.boot</groupid>                 <artifactid>spring-boot-starter-tomcat</artifactid>                 <scope>provided</scope>             </dependency>              <dependency>                 <groupid>org.springframework.boot</groupid>                 <artifactid>spring-boot-starter-log4j</artifactid>             </dependency>              <dependency>                 <groupid>org.springframework.boot</groupid>                 <artifactid>spring-boot-starter-test</artifactid>                 <scope>test</scope>             </dependency>              <dependency>                 <groupid>org.springframework.boot</groupid>                 <artifactid>spring-boot-starter-thymeleaf</artifactid>             </dependency>              <dependency>                 <groupid>org.apache.httpcomponents</groupid>                 <artifactid>httpclient</artifactid>                 <version>4.5.2</version>             </dependency>              <dependency>                 <groupid>org.springframework.boot</groupid>                 <artifactid>spring-boot-starter-data-jpa</artifactid>             </dependency>              <dependency>                 <groupid>org.springframework.boot</groupid>                 <artifactid>spring-boot-starter-security</artifactid>             </dependency>              <dependency>                 <groupid>org.springframework.security.oauth</groupid>                 <artifactid>spring-security-oauth2</artifactid>             </dependency>              <dependency>                 <groupid>com.microsoft.sqlserver</groupid>                 <artifactid>sqljdbc4</artifactid>                 <version>4.0</version>             </dependency>              <dependency>                 <groupid>org.json</groupid>                 <artifactid>json</artifactid>                 <version>20160212</version>             </dependency>              <dependency>                 <groupid>commons-io</groupid>                 <artifactid>commons-io</artifactid>                 <version>2.4</version>             </dependency>              <dependency>                 <groupid>com.microsoft.azure</groupid>                 <artifactid>azure</artifactid>                 <version>1.0.0-beta2</version>             </dependency>          </dependencies>          <repositories>             <repository>                 <id>spring-releases</id>                 <url>https://repo.spring.io/libs-release</url>             </repository>         </repositories>      </project> 


edit 1:30pm 7-21-16

i've added following pom.xml , tried packaging mvn package -p prod, however, when hit /about still see i'm using appliation.properties instead of application-prod.properties.

<profiles>     <profile>         <id>qa</id>         <properties>             <spring.profiles.active>qa</spring.profiles.active>         </properties>     </profile>      <profile>         <id>dev</id>         <properties>             <spring.profiles.active>dev</spring.profiles.active>         </properties>     </profile>      <profile>         <id>prod</id>         <properties>             <spring.profiles.active>prod</spring.profiles.active>         </properties>     </profile> </profiles> 

you can define spring profiles through following:

web.xml

<context-param>  <param-name>spring.profiles.active</param-name>  <param-value>your target profile here</param-value> </context-param> 

setenv.sh

under tomcat's bin folder create setenv.sh file following content:

java_opts="$java_opts -dspring.profiles.active=<your target profile here>" 

Comments