2016-05-27 13 views
0

同じグループ(たとえば 'com.android.support')から同じバージョン('23 .4.0 'など)の複数のパッケージ(「appcompat-v7」など)を宣言するには、DRY、より良いgradle依存宣言がありますか?

実際の宣言:

... 
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" 
... 

あなたはGradleのスクリプトを構築することを認識したらそのような何か?:

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

答えて

2

を行うことが可能であるがのそれぞれを意味ばかりのGroovyスクリプトですそれらの "コンパイル"行は単なるメソッド呼び出しであり、多くの可能性が見え始めます。

たとえば、アーティファクト名の「インライン」配列を指定し、その上で「each()」を呼び出し、「compile group:$it:$version」(またはそのようなもの)を指定するクロージャを渡します。

+0

通知のためのthx! – 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']) 
関連する問題