Estoy intentando establecer un perfil activo en una aplicación Spring Boot utilizando Maven 3.
En mi pom.xml he puesto default active profile y la propiedad spring.profiles.active a development:
<profiles>
<profile>
<id>development</id>
<properties>
<spring.profiles.active>development</spring.profiles.active>
</properties>
<activation>
<activeByDefault>true</activeByDefault>
</activation>
</profile>
</profiles>
pero cada vez que ejecuto mi aplicación, recibo el siguiente mensaje en los logs:
No active profile set, falling back to default profiles: default
y el perfil de SpringBoot está configurado por defecto (lee application.properties en lugar de application-development.properties)
¿Qué más debo hacer para que mi perfil activo de SpringBoot se establezca usando el perfil de Maven?
Cualquier ayuda es muy apreciada.
El perfil de Maven y el perfil de Spring son dos cosas completamente diferentes. Tu pom.xml define la variable spring.profiles.active
que está disponible en el proceso de construcción, pero no en tiempo de ejecución. Por eso sólo se activa el perfil por defecto.
**¿Cómo enlazar el perfil de Maven con Spring?
Necesitas pasar la variable build a tu aplicación para que esté disponible cuando se inicie.
Define un marcador de posición en tu application.properties
:
[email protected]@
La variable @spring.profiles.active@
debe coincidir con la propiedad declarada en el perfil de Maven.
Habilita el filtrado de recursos en tu pom.xml:
<build>
<resources>
<resource>
<directory>src/main/resources</directory>
<filtering>true</filtering>
</recursos>
</recursos>
...
</build>
Cuando se ejecute la compilación, todos los ficheros del directorio src/main/resources
serán procesados por Maven y el marcador de posición de tu application.properties
será reemplazado por la variable que hayas definido en tu perfil de Maven.
Para más detalles puedes ir a mi post donde describo este caso de uso.
Puede ejecutar utilizando el siguiente comando. Aquí quiero ejecutar utilizando el perfil de primavera local
:
spring-boot:run -Drun.jvmArguments="-Dspring.profiles.active=local"
Debe utilizar el Spring Boot Maven Plugin:
<project>
...
<build>
...
<plugins>
...
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<version>1.5.1.RELEASE</version>
<configuration>
<profiles>
<profile>foo</profile>
<profile>bar</profile>
</profiles>
</configuration>
...
</plugin>
...
</plugins>
...
</build>
...
</project>