Le printemps des propriétés de l'application du profil avec la guerre de fichier
Je suis en train de package de mon projet dans un .war
pour un serveur tomcat de déploiement. J'ai besoin de la capacité à utiliser mon application.properties
OU application-dev.properties
OU appliation-qa.properties
OU application-prod.properties
. L'exécution du projet avec l'embeded servlet, je suis en mesure de spécifier via la ligne de commande, celui que je veux utiliser, mais, le projet utilise toujours application.properties
quand je l'emballer comme un .war
.
J'utilise les commandes suivantes pour exécuter mon projet localement:
mvn spring-boot:run
mvn spring-boot:run -Drun.arguments="--spring.profiles.active=dev"
Et cette commande pour package de mon projet de bambou pour le déploiement:
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
J'ai ajouté ce qui suit à mon pom.xml et a essayé de l'emballage avec mvn package -P PROD
, cependant, quand j'ai frappé /about
je vois toujours que je suis en utilisant appliation.properties
au lieu de 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>
- avez-vous trouvé la solution pour cela?
- La mise à jour de mon ressort de démarrage de la version fixe pour moi. Ils ont changé la façon dont vous configurez l'application externe servlet déploiements et il résolu ce problème.
Vous devez vous connecter pour publier un commentaire.
Vous pouvez définir le printemps des profils suivants:
Sous votre Tomcat dossier bin de créer setenv.sh fichier avec le contenu suivant:
spring.profiles.default
pourrait vous aider.Avez-vous essayé ceci?
Pour l'emballage, vous pouvez créer des profils de ce genre et appeler ce profil lors de la construction via $mvn package -P QA:
.war
avec le profil indiqué, mais j'ai besoin de déployer le.war
dans tomcatPour l'emballage du projet conformément à un profil défini, vous devez faire ceci :
Dans votre
application.properties
, ajouter[email protected]@
Dans votre POM, ajouter ceci :
et de définir votre profil (tout comme ce que vous avez fait)
exécutez la commande
mvn package -P QA
Vous verrez que dans le générés GUERRE, dans le
application.properties
,[email protected]@
sera remplacé parspring.profiles.active=QA
j'espère que cela résoudre votre problème. (d'abord, je vais demander appology parce que mon anglais c'est très mauvais, mais je veux vous aider)
Maintenant, mon commentaire :
Je code avec maven et spring-boot.
vous devez avoir tous vos profils avec leurs propriétés respectives dans le pom.xml ( dans mon cas, j'ai enregistreurs par profil, vous allez ajouter les propriétés dont vous avez besoin ) :
ensuite, vous pouvez sélectionner le profil à dire de printemps avec qui l'on travaille sur le fichier "application."propriétés de:
printemps.les profils.active="nameOfProfileYouWantToActive"
Avec cela il vous suffit de lancer : mvn clean package et vous obtein votre déployer.