2016-05-27 12 views
0

Gibt es eine bessere Möglichkeit, mehrere Pakete (z. B. "appcompat-v7") aus derselben Gruppe (z. B. "com.android.support") mit derselben Version (z. B. "23 .4.0") zu deklarieren?TROCKEN, gibt es eine bessere Graddle-Abhängigkeitsdeklaration?

tatsächliche Erklärung:

... 
def androidSupport = '23.4.0' 
def rxBinding = '0.4.0' 

dependencies { 
    ... 

    // android support 
    compile "com.android.support:appcompat-v7:$androidSupport" 
    compile "com.android.support:design:$androidSupport" 
    compile "com.android.support:percent:$androidSupport" 

    // rxJava 
    compile "com.jakewharton.rxbinding:rxbinding:$rxBinding" 
    compile "com.jakewharton.rxbinding:rxbinding-support-v4:$rxBinding" 
    compile "com.jakewharton.rxbinding:rxbinding-appcompat-v7:$rxBinding" 
    compile "com.jakewharton.rxbinding:rxbinding-design:$rxBinding" 
    compile "com.jakewharton.rxbinding:rxbinding-recyclerview-v7:$rxBinding" 
... 

ist es möglich, so etwas zu tun ?:

... 
compile(group: 'com.android.support', version: '23.4.0') { 
    modules: "appcompat-v7", "design", "percent" 
} 
... 

Antwort

2

Sobald Sie erkennen, dass ein Gradle bauen Skript nur ein Groovy-Skript ist, was bedeutet, dass jeder diese "compile" -Zeilen sind nur Methodenaufrufe, Sie beginnen, viele Möglichkeiten zu sehen.

Geben Sie zum Beispiel ein "Inline" -Array mit Artefaktnamen an, rufen Sie "each()" darauf auf und übergeben Sie eine Closure, die "compile group:$it:$version" (oder etwas Ähnliches) angibt.

+0

Danke für die Erinnerung! – polmabri

1
def multiArtifactDependency = { String group, String version, List<String> artifacts -> artifacts.each { compile "${group}:${it}:${version}" } } 

multiArtifactDependency('com.android.support', '23.3.0', ['appcompat-v7', 'design']) 
multiArtifactDependency('com.squareup.retrofit2', '2.0.2', ['retrofit', 'converter-gson', 'adapter-rxjava']) 
Verwandte Themen