2016-04-21 10 views
5

Sto valutando gradle per il mio progetto di avvio a molla. Tutto sembra funzionare ma qui è dove sono bloccato. Ho 2 file di proprietà. Una per prod cioè:Gradle: copia file di proprietà differenti a seconda dell'ambiente e crea jar

application_prod.properties

e un altro per qa cioè:

application_qa.properties

La mia esigenza è tale che, mentre costruisco (crea il file jar) il progetto da gradle, devo rinominare il file delle proprietà su

application.properties

e quindi creare il file jar. Per quanto ne so, gradle ha un compito di build predefinito. Quindi qui devo sovrascriverlo in modo tale che consideri solo il file delle proprietà richiesto e lo rinomino e quindi costruisco in base all'ambiente.

Come posso ottenere questo risultato?

risposta

5

Quello che dovete fare è quello di ignorare processResources configurazione:

processResources { 
    def profile = (project.hasProperty('profile') ? project.profile : 'qa').toLowerCase() 
    include "**/application_${profile}.properties" 
    rename { 
     'application.properties' 
    } 
} 

Con il seguente pezzo di codice cambiato otterrete l'output di seguito:

$ ./gradlew run -Pprofile=PROD 
:compileJava UP-TO-DATE 
:processResources UP-TO-DATE 
:classes UP-TO-DATE 
:run 
LOL 
Profile: PROD 

BUILD SUCCESSFUL 

Total time: 3.63 secs 

$ ./gradlew run -Pprofile=QA 
:compileJava UP-TO-DATE 
:processResources 
:classes 
:run 
LOL 
Profile: QA 

BUILD SUCCESSFUL 

Total time: 3.686 secs 

$ ./gradlew run    
:compileJava UP-TO-DATE 
:processResources UP-TO-DATE 
:classes UP-TO-DATE 
:run 
LOL 
Profile: QA 

BUILD SUCCESSFUL 

Total time: 3.701 secs 

Demo è here.

Problemi correlati