2015-09-22 8 views
8

Voglio costruire JAR con la versione auto-definita passati tramite linea di comando, come ad esempio:Come impostare project.version passando la proprietà della versione sulla linea di comando gradle?

Quando eseguo Gradle compito costruire in questo modo:

gradle build -Pversion=1.0 

myproject-1.0.jar deve essere generato.

Ho provato ad aggiungere la riga seguente al build.gradle, ma non ha funzionato:

version = project.hasProperty('version') ? project['version'] : '10.0.0' 
+0

Hai provato con l'aggiunta di proprietà di sistema ('-D') invece di proprietà del progetto (' -P')? –

+0

@MisaLazovic Non ha funzionato neanche. –

+0

Cosa stupida, ma prova con il formato 'gradle [opzione] [task]', non 'gradle [task] [option]', ad esempio 'gradle -Pversion = 1.0 build'. Qualche fortuna? –

risposta

8

Non sono in grado di ignorare le proprietà del progetto da linea di comando esistente, dare un'occhiata here. Quindi cercate di rinominare una variabile versione a qualcosa di diverso dalla versione e impostarlo con -P la bandiera prima del comando, come:

gradle -PprojVersion=10.2.10 build 

E poi nel vostro build.gradle

if (project.hasProperty('projVersion')) { 
    project.version = project.projVersion 
} else { 
    project.version = '10.0.0' 
} 

O come avete fatto con? : operatore

+0

o: 'project.version = project.findProperty ('projVersion')?: '10 .0.0'' – Ajax

+0

o 'version = findProperty 'projVersion'?: '10 .0.0'' se si valuta la brevità – Ajax

+0

o, come risposta ho postato:' version = (findProperty ('version') == 'unspecified')? '10 .0.0 ': version' – Ajax

6

Se si sposta version ingresso al gradle.properties di file è possibile anche:

gradle clean build -Dorg.gradle.project.version=1.1 
+3

'-Dorg.gradle.project.version' è troppo lungo :-) In realtà è sufficiente fornire' -Pversion = 1.1'. – thokuest

+0

Sì, potrebbe anche essere. – Opal

13

Ho scoperto che è necessario impostare la proprietà nel file gradle.properties e fare riferimento a build.gradle affinché la soluzione sopra descritta funzioni. Assicurati anche che le opzioni vengano prima del comando (come menzionato sopra).

gradle.properties contenuti:

version=1.0.12 

contenuti build.gradle:

version "${version}" 

versione può quindi essere sostituito sulla riga di comando con:

gradle -Pversion=1.0.13 publish 
+0

Questa è la migliore risposta, facilmente riproducibile senza ingombrare ogni script build.gradle. –

3

Se avete bisogno di un versione predefinita diversa da "non specificato":

version = "${version != 'unspecified' ? version : 'your-default-version'}" 

versione Passo tramite linea di comando:

gradle build -P version=1.0 
1

version = (findProperty('version') == 'unspecified') ? '0.1' : version