2017-02-22 15 views
6

Próbuję ustawić aktywny profil w Spring aplikacji Boot użyciu Maven 3.
W moim pom.xml ustawić domyślny profil aktywny i mienia spring.profiles.active do rozwoju:Konfiguracja aktywny profil w SpringBoot poprzez Maven

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

ale za każdym razem uruchomić mój wniosek, że pojawia się następujący komunikat w dziennikach:

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

i profil SpringBoot jest ustawiony jako domyślny (odczytuje application.properties zamiast application-development.properties).

Co jeszcze należy zrobić, aby mój aktywny profil SpringBoot został ustawiony przy użyciu profilu Maven?
Każda pomoc bardzo ceniona.

+1

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

Odpowiedz

16

Profil Maven i profil Wiosna to dwie zupełnie różne rzeczy. Twój pom.xml definiuje zmienną spring.profiles.active, która jest dostępna w procesie kompilacji, ale nie w środowisku wykonawczym. Dlatego aktywowany jest tylko profil domyślny.

Jak powiązać profil Maven ze sprężyną?

Musisz przekazać zmienną kompilacji do swojej aplikacji, aby była dostępna po uruchomieniu.

  1. Zdefiniuj zastępczy w swojej application.properties:

    [email protected]@ 
    

    Zmienna @[email protected] musi być zgodna z deklarowaną właściwość z profilem Maven.

  2. Włącz filtrowanie zasobów w ty pom.xml:

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

    Gdy budowa jest wykonywana, wszystkie pliki w katalogu src/main/resources będą przetwarzane przez Maven i zastępczy w swoim application.properties zostanie zastąpione zmiennej zdefiniowałeś w swoim profilu Maven.

Aby uzyskać więcej informacji, można go to my post, gdzie opisałem ten przypadek użycia.

+0

Czy istnieje sposób na włączenie profilu dla testów jednostkowych za pomocą polecenia maven? Może masz pomysł na [to pytanie.] (Https://stackoverflow.com/q/47833555/3493036) – Patrick

3

Należy użyć Wiosna 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> 
1

Można uruchomić za pomocą następującego polecenia. Tutaj chcę uruchomić za pomocą profilu sprężyny local:

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

+0

nie działa dla mnie – maddob

Powiązane problemy