Gradle:dependenciesへの定番設定

2018年12月6日

複数プロジェクトのdependenciesに決まりきったことを記述することがある。その筆頭としては、JUnit関連のライブラリだ。

例えば、

dependencies {
  testCompile group: 'org.mockito', name: 'mockito-core', version: '2.19.0'
  testCompile(group: 'junit', name: 'junit', version: '4.12') {
    exclude module:'hamcrest-core'
  }
  testCompile group: 'org.hamcrest', name: 'hamcrest-all', version: '1.3' 

  .....
}

などと、どのbuild.gradleにも記述している。

簡略化案1

これを簡略化するには以下のようにする。

common.gradle

def STD_TEST_COMPILE = { d ->
  d.testCompile group: 'org.mockito', name: 'mockito-core', version: '2.19.0'
  d.testCompile(group: 'junit', name: 'junit', version: '4.12') {
    exclude module:'hamcrest-core'
  }
  d.testCompile group: 'org.hamcrest', name: 'hamcrest-all', version: '1.3' 
}
ext.STD_TEST_COMPILE = STD_TEST_COMPILE

build.gradle

apply from: 'common.gradle'

dependencies {
  STD_TEST_COMPILE(delegate)
  ....
}

簡略化案2

common.gradle

ext.STD_TEST_COMPILE = { dependencies {
  testCompile group: 'org.mockito', name: 'mockito-core', version: '2.19.0'
  testCompile(group: 'junit', name: 'junit', version: '4.12') {
    exclude module:'hamcrest-core'
  }
  testCompile group: 'org.hamcrest', name: 'hamcrest-all', version: '1.3' 
}}

build.gradle

apply from: 'common.gradle'

STD_TEST_COMPILE()
dependencies {
  ....
}