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:
mvn spring-boot:run
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
Post a Comment