2016-01-08 28 views
6

Używam Gradle w moim projekcie. Mam zadanie do wykonania dodatkowej konfiguracji z moją wojną. Potrzebuję zbudować ciąg znaków do użycia w moim zadaniu, powiedzmy, że mam:Używanie zmiennych w kompilacji Gradle

task extraStuff{ 
    doStuff 'org.springframework:spring-web:[email protected]' 
} 

To działa dobrze. Co muszę zrobić, to określić wersję (faktycznie już zdefiniowaną we właściwościach pliku) i wykorzystuje to w zadania jak:

springVersion=3.0.6.RELEASE 

task extraStuff{ 
    doStuff 'org.springframework:spring-web:${springVersion}@war' 
} 

Mój problem jest wersja wiosna nie jest rozpoznawana jako zmiennej. Więc jak mogę przekazać to w ciągu znaków?

+0

nie zapomnij, można podzielić go na zewnątrz, a także: 'DOS tuf grupa: 'org.springframework', nazwa: 'spring-web', wersja: $ {springVersion}, ext: 'war'' –

Odpowiedz

13

Myślę, że problem może położyć na łańcuch znaków ograniczników:

  1. Ciąg literały są określone dokładnie tak jak w groovy ująć je w pojedyncze lub podwójne cudzysłowy (na przykład "3.0.6.RELEASE");
  2. Gstrings nie są analizowane w ciągach pojedynczych cudzysłowów (zarówno pojedynczych '...', jak i potrójnych '''...'''), jeśli dobrze pamiętam;

Więc kod będzie:

springVersion = '3.0.6.RELEASE' //or with double quotes "..." 

task extraStuff{ 
    doStuff "org.springframework:spring-web:${springVersion}@war" 
} 
+1

Tak, chciałem dodać tutaj tę samą odpowiedź :) Właśnie to sobie uświadomiłem. Potrzebujesz kawy;) Pozdrawiam. – huzeyfe

+0

Prawda. Zmiana z pojedynczej na podwójną wycenę naprawiła mój problem –

3

Jeśli opracowanie Androida korzystając Gradle, aby zadeklarować zmienną (czyli posiadających jakąś wersję zależności) należy użyć słowa kluczowego def jak poniżej:

def dependsVersion = '1.2' 

dependencies { 
    compile "groupId:artifactId:${dependsVersion}" 
} 
Powiązane problemy