2016-04-28 20 views
6

Sto provando a impostare gradle per avviare il processo bootRun con vari profili molla abilitati.Come eseguire bootRun con il profilo molla tramite l'attività gradle

Il mio attuale configurazione bootRun assomiglia:

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'] 
    } 
} 

mi piacerebbe impostare le proprietà del sistema con un compito gradle, e quindi eseguire bootRun.

Il mio tentativo si presentava così:

task bootRunDev 

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

Alcune domande:

  1. è systemProperty una parte della configurazione di avvio bootRun primavera?
  2. è possibile impostare una proprietà di sistema in un'altra attività?
  3. Quale dovrebbe essere il mio prossimo passo? Ho bisogno di ottenere la configurazione bootRunDev per accadere prima bootRun
  4. c'è un altro approccio che dovrebbe guardare in

-Eric

risposta

3

modo più semplice sarebbe quella di definire di default e permettono di essere sovrascritta. Non sono sicuro di cosa sia l'uso di systemProperty in questo caso. Argomentazioni semplici faranno il lavoro.

def profiles = 'prod' 

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

Per eseguire dev:

./gradlew bootRun -Pdev 

Per aggiungere le dipendenze sul compito che si può fare qualcosa di simile:

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

Ci sono molti modi raggiungere questi obiettivi nella Gradle.

+0

I get 'Impossibile trovare il metodo dev() per gli argomenti [org.springframework.boot: spring-boot-devtools] sull'oggetto di tipo org.gradle.api .internal.artifacts.dsl.dependencies.DefaultDependencyHandler. quando provo questo approccio. http://stackoverflow.com/a/31328621/1134197 funziona bene – aycanadal

+0

Mentre il primo snippet di codice mostra come configurare l'attività 'bootRun', altri esempi semplicemente non funzionano. –

4

Le variabili di ambiente possono essere utilizzate per impostare le proprietà della molla come descritto in the documentation. Quindi, per impostare il profilo attivo (spring.profiles.active) è possibile utilizzare il seguente codice sui sistemi Unix:

SPRING_PROFILES_ACTIVE=test gradle clean bootRun 

e Windows è possibile utilizzare:

SET SPRING_PROFILES_ACTIVE=test 
gradle clean bootRun 
+2

Anche se questo snippet di codice può risolvere la domanda, [compresa una spiegazione] (http://meta.stackexchange.com/questions/114762/explaining-entally-code-based-answers) aiuta davvero a migliorare la qualità del tuo post. Ricorda che stai rispondendo alla domanda per i lettori in futuro, e queste persone potrebbero non conoscere le ragioni del tuo suggerimento sul codice. – DimaSan

+0

questo non funziona per Windows – JackDev

1

per quelle persone che utilizzano Primavera Boot 2.0+, è puoi utilizzare quanto segue per impostare un'attività che eseguirà l'app con un determinato set di 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' 
    } 
} 

Quindi è possibile eseguire semplicemente ./gradlew bootRunDev o simile dal proprio IDE.

+0

come possiamo personalizzare la cartella webapp per questa attività ..? – rijin

0

Per qualcuno da internet, c'era una domanda simile https://stackoverflow.com/a/35848666/906265 io fornisco la risposta modificata da qui così:

// 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"] 
      } 
     } 
    } 
} 

<...> 

poi nel terminale:

gradle runDev 

Hanno usato gradle 3.4.1 e spring boot 1.5.10.RELEASE

Problemi correlati