2015-01-21 18 views
5

Ecco il mio ingressi:Gradle configurazioni run con diverse proprietà

Main.java

package com; 

public class Main { 

    public static void main(String[] args) { 
     System.out.println(System.getProperty("greeting.language")); 
    } 
} 

build.gradle

apply plugin: 'java' 
apply plugin: 'application' 

sourceCompatibility = 1.7 
version = '1.0' 

mainClassName = "com.Main" 

applicationDefaultJvmArgs = ["-Dgreeting.language=en"] 

La mia domanda: Come posso configurare un'altra configurazione compito corsa per usa diversi argomenti jvm, ad esempio: -Dgreeting.language = ch.

Mi sono trasferito a gradle da parte di Maven, quindi per tale caso utilizzerei i profili Maven. C'è qualche strucrure in gradle che corrisponde ai profili?

UPDATE 1

Vorrei chiarire un compito un po '. Il mio progetto è molto più complesso dell'esempio che ho dato sopra. Mi piacerebbe avere una serie di compiti gradle (o profili/o qualsiasi cosa venga chiamata in gradle), ciascuna attività dovrebbe essere autonoma con un set personalizzato di variabili. Come uscita mi piacerebbe avere un insieme di compiti Gradle:

gradle <enableAllFeatures> 
gradle <disableFeatureA> 
... 

E non è un requisito per queste variabili siano JvmArgs. Potrebbe essere costanti (o qualsiasi altra cosa possibile in Gradle), ma è obbligo di avere compiti diversi, e ogni attività deve specificare il proprio insieme di variabili

UPDATE 2

ero navigazione in Internet e ho scoperto un argomento molto interessante - varianti di costruzione gradle, ma sembra essere applicabile solo ai progetti Android. È possibile utilizzare le varianti di build nei progetti java?

+0

Corporatura varianti È citati sono solo Android. Puoi semplicemente simularli in diversi modi. – Opal

+0

Potresti descriverli o condividere link dove sono descritti questi modi? –

+0

So solo di loro:/Puoi ad es. utilizzare il filtro con il filtro 'ReplaceTokens', applicare da impostazioni diverse, regole di attività. Gradle è uno strumento davvero flessibile .. – Opal

risposta

2

parametrizzare il linguaggio come questo:

applicationDefaultJvmArgs = ["-Dgreeting.language=${language}"] 

Poi, quando si esegue Gradle, passare la lingua come un parametro utilizzando l'opzione -P:

$ gradle -Planguage=en tasks 

o

$ gradle -Planguage=ch tasks 

Riferimenti

Gradle Goodness: Using Properties for Multiple Environments or Profiles

Similar Maven profile Gradle

+0

Grazie per la tua risposta, ma non è esattamente quello che mi piacerebbe fare. Voglio evitare parametri specifici nella riga di comando. Il mio progetto è molto più complesso e utilizza molte più variabili. Il mio obiettivo è: quando un nuovo membro del team entra in progetto - esegue solo "gradle " e ha tutti i progetti attivi e funzionanti evitando qualsiasi configurazione. –

+1

Ok, non era chiaro dalla tua domanda. Quello che stai cercando è nella pagina che ho fatto riferimento [Grado di profilo Maven simile] (http://www.coderanch.com/t/603665/tools/similar-Maven-profile-Gradle). Per favore leggilo e fammi sapere se può funzionare per te. – gknicker

+0

Sembra una soluzione migliore, grazie! –

Problemi correlati