Keep on moving

あんまりまとまってないことを書きますよ

Gradleで条件によってdependencyを変える

こんにちは, 僕です。

近頃 Apache Beam にたまにパッチを送るのを趣味で行っているのですが、そこで学んだtipsを紹介します。 今回のテーマはGradleを使っていて条件によってdependencyを変えたい的な要件です。

ちなみにGradleのバージョンは6以降が対象です。

TL;DR

github.com

条件によってGradleのdependencyを切り替える。

Gradleだとできそうだなーと思って調べたら結構簡単に見つかりました。

stackoverflow.com

こんな感じでgradleの実行時引数をとって分岐することができるとのこと。

$ gradle -Pgson dependencies --configuration implementation

これを利用すると呼び出しもとのgradleファイル内で変数を参照することも可能でした。 以下のような感じです。

// aaa.gradle
spark_scala_version = '2.12'
// bbb.gradle
//      aaa.gradleから呼ばれる
dependencies {
  // ...
  if(project.property("spark_scala_version").equals("2.11")){
    runtimeOnly library.java.jackson_module_scala_2_11
  } else {
    runtimeOnly library.java.jackson_module_scala_2_12
  }
  // ...

こんな感じで、Javaのバージョンによって参照するライブラリのバージョン分けることも可能なようです。 先人に感謝