しおしお

IntelliJ IDEAのことなんかを書いてます

GradleのcompileOnly知らなかったので使ってみた

Gradle2.12からコンパイル専用のスコープが導入されていたらしいので試してみた。

build.gradleの定義

compileOnlyを使うことで、コンパイル時のみ依存するライブラリを定義できる。
testCompileOnlyを使うと、テストのコンパイルじのみ必要なライブラリを定義できる。

compileOnly 'javax:javaee-api:7.0'

微妙なところ

compileOnlyはtestCompileやtestRuntimeへは引き継がれない。
なので、テストコードから使いたい場合はテスト用のスコープにも追加してあげる必要がある。

一律テスト用のスコープに追加しても問題はないと思うので、これが一番簡単かなと思われる。
compileOnlyを追加した場合にも自動的に追加されるし。

sourceSets.test {
  compileClasspath += configurations.compileOnly
  runtimeClasspath += configurations.compileOnly
}