2016-04-28 10 views
6

Próbuję ustawić gradle, aby uruchomić proces bootRun z włączonymi różnymi profilami sprężynowymi.Jak uruchomić bootRun z profilem sprężynowym za pomocą zadania gradle

Moja obecna konfiguracja bootRun wygląda następująco:

bootRun { 
    // pass command line options from gradle to bootRun 
    // usage: gradlew bootRun "-Dspring.profiles.active=local,protractor" 
    if (System.properties.containsKey('spring.profiles.active')) { 
     systemProperty "spring.profiles.active", System.properties['spring.profiles.active'] 
    } 
} 

Chciałbym ustawić właściwości systemu z gradle zadania, a następnie wykonać bootRun.

Moja próba wyglądała tak:

task bootRunDev 

bootRunDev { 
    System.setProperty("spring.profiles.active", "Dev") 
} 

Kilka pytań:

  1. jest systemProperty częścią konfiguracji bootRun bagażnika sprężyna?
  2. czy można ustawić właściwość systemową w innym zadaniu?
  3. Jaki powinien być mój następny krok? Muszę dostać bootRunDev konfiguracja wydarzy przed bootRun
  4. Czy istnieje inne podejście powinno patrzę w

-Eric

Odpowiedz

3

Najprostszym sposobem byłoby określenie domyślnego i pozwolić mu być nadpisane. Nie jestem pewien, jaki jest pożytek z systemProperty w tym przypadku. Proste argumenty wykonają zadanie.

def profiles = 'prod' 

bootRun { 
    args = ["--spring.profiles.active=" + profiles] 
} 

Aby uruchomić dev:

./gradlew bootRun -Pdev 

Aby dodać zależności na zadania można zrobić coś takiego:

task setDevProperties(dependsOn: bootRun) << { 
    doFirst { 
    System.setProperty('spring.profiles.active', profiles) 
    } 
} 

Istnieje wiele sposobów osiągnięcia tego celu w Gradle.

+0

Otrzymuję komunikat "Nie można znaleźć metody dev() dla argumentów [org.springframework.boot: spring-boot-devtools] na obiekcie typu org.gradle.api .internal.artifacts.dsl.dependencies.DefaultDependencyHandler., kiedy próbuję tego podejścia. http://stackoverflow.com/a/31328621/1134197 działa dobrze – aycanadal

+0

Podczas gdy pierwszy fragment kodu pokazuje, jak skonfigurować zadanie 'bootRun', inne przykłady po prostu nie działają. –

4

Zmienne środowiskowe służą do ustawiania właściwości sprężyny zgodnie z opisem w the documentation. Tak, aby ustawić aktywny profil (spring.profiles.active) można użyć następującego kodu w systemach UNIX:

SPRING_PROFILES_ACTIVE=test gradle clean bootRun 

i Windows można użyć:

SET SPRING_PROFILES_ACTIVE=test 
gradle clean bootRun 
+2

Podczas gdy ten fragment kodu może rozwiązać pytanie, [w tym wyjaśnienie] (http://meta.stackexchange.com/questions/114762/explaining-entirely-code-ans -answers) naprawdę pomaga poprawić jakość twojego posta. Pamiętaj, że odpowiadasz na pytanie przeznaczone dla czytelników w przyszłości, a te osoby mogą nie znać powodów sugestii dotyczących kodu. – DimaSan

+0

to nie działa dla systemu Windows – JackDev

1

Dla tych ludzi korzystających Wiosna Boot 2.0+, ty można użyć następujących ustawień, aby skonfigurować zadanie, które uruchomi aplikację z określonym zestawem profili.

task bootRunDev(type: org.springframework.boot.gradle.tasks.run.BootRun, dependsOn: 'build') { 
    group = 'Application' 

    doFirst() { 
     main = bootJar.mainClass 
     classpath = sourceSets.main.runtimeClasspath 
     systemProperty 'spring.profiles.active', 'dev' 
    } 
} 

Następnie można po prostu uruchomić ./gradlew bootRunDev lub podobne z IDE.

+0

jak możemy dostosować folder webapp do tego zadania ..? – rijin

0

Dla kogoś z internetu, nie było podobne pytanie https://stackoverflow.com/a/35848666/906265 Mam dostarczyć zmodyfikowaną odpowiedź od niego również tutaj:

// build.gradle 
<...> 

bootRun {} 

// make sure bootRun is executed when this task runs 
task runDev(dependsOn:bootRun) { 
    // TaskExecutionGraph is populated only after 
    // all the projects in the build have been evaulated https://docs.gradle.org/current/javadoc/org/gradle/api/execution/TaskExecutionGraph.html#whenReady-groovy.lang.Closure- 
    gradle.taskGraph.whenReady { graph -> 
     logger.lifecycle('>>> Setting spring.profiles.active to dev') 
     if (graph.hasTask(runDev)) { 
      // configure task before it is executed 
      bootRun { 
       args = ["--spring.profiles.active=dev"] 
      } 
     } 
    } 
} 

<...> 

następnie w terminalu:

gradle runDev 

wykorzystali gradle 3.4.1 i spring boot 1.5.10.RELEASE

Powiązane problemy