2017-02-22 14 views
6

Я пытаюсь установить активный профиль в Спринг приложения загрузки с использованием Maven 3.
В моем pom.xml я установил по умолчанию активный профиль и свойство spring.profiles.active для развития:Настройка активного профиля в SpringBoot с помощью Maven

<profiles> 
    <profile> 
     <id>development</id> 
     <properties> 
      <spring.profiles.active>development</spring.profiles.active> 
     </properties> 
     <activation> 
      <activeByDefault>true</activeByDefault> 
     </activation> 
    </profile> 
</profiles> 

, но каждый раз, когда я запускаю мое приложение, я получаю следующее сообщение в журналах:

No active profile set, falling back to default profiles: default 

и профиль SpringBoot установлен на значение по умолчанию (читает application.properties вместо application-development.properties)

Что еще мне нужно сделать, чтобы мой активный профиль SpringBoot был установлен с использованием профиля Maven?
Любая помощь очень ценится.

+1

http://stackoverflow.com/questions/25420745/how-to-set-spring-active-profiles-with-maven-profiles –

ответ

16

профиль Maven и профиль Spring две совершенно разные вещи. Ваш pom.xml определяет переменную spring.profiles.active, которая доступна в процессе сборки, но не во время выполнения. Вот почему активирован только профиль по умолчанию.

Как связать профиль Maven с весной?

Вам необходимо передать переменную build в ваше приложение, чтобы она была доступна, когда она запущена.

  1. Определить заполнитель в вашем application.properties:

    [email protected]@ 
    

    Переменная @[email protected] должна соответствовать заявленному свойства из профиля Maven.

  2. Включить фильтрацию ресурсов в вас pom.xml:

    <build> 
        <resources> 
         <resource> 
          <directory>src/main/resources</directory> 
          <filtering>true</filtering> 
         </resource> 
        </resources> 
        … 
    </build> 
    

    Когда сборка выполняется, все файлы в каталоге src/main/resources будут обработаны Maven и заполнитель в ваш application.properties будет заменен переменной вы определили в своем профиле Maven.

Для получения более подробной информации вы можете указать go to my post, где я описал этот прецедент.

+0

Есть способ включить профиль для модульных тестов с помощью команды maven? Возможно, у вас есть идея для [этого вопроса.] (Https://stackoverflow.com/q/47833555/3493036) – Patrick

3

Вы должны использовать Spring загрузочную 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> 
1

Вы можете выполнить следующую команду. Здесь я хочу работать, используя пружинный профиль local:

spring-boot:run -Drun.jvmArguments="-Dspring.profiles.active=local"

+0

не работает для меня – maddob