Tambourine作業メモ

主にスキル習得のためにやった作業のメモ。他人には基本的に無用のものです。

Gradleでjarをつくる(3)

こんどは(2)でビルドしたプロジェクトに依存しているプロジェクトをビルドする。ちなみに今回ビルドしようとしているのは、Commonプロジェクト。前回ビルドしたのはCommonDAOプロジェクトである。

もちろん、順番にビルドすることにして、依存先のbuildディレクトリ以下のjarファイルにdependenciesを記述してもできると思うが、それではmake以下である。

プロジェクトに依存する場合には、このように書くらしい。

apply plugin: 'java'

sourceSets {
  main {
    java {
      srcDir 'src'
    }
  }
}

dependencies {
  compile project(':CommonDAO')
}

もちろんうまくいかない。

> gradle assemble

FAILURE: Build failed with an exception.

* Where:
Build file '/Users/tambara/hoge/architect/Common/build.gradle' line: 12

* What went wrong:
A problem occurred evaluating root project 'Common'.
> Project with path ':CommonDAO' could not be found in root project 'Common'.

CommonDAOなんて見つからないよと言っている。Gradleはパスの上下関係でプロジェクトの上下関係を認識するようなので、CommonとCommonDAOが横に並んでいるからダメなのだ。

プロジェクト構成は、settings.gradleというファイルで指定する。プロジェクト構成を知るために、Gradleはパスを遡ってsettings.gradleを探す。なので、今回の場合は、CommonとCommonDAOと同じレベルに置いてやれば良い

  • architect/
    • settings.gradle
    • Common/
    • CommonDAO/

こんな感じ。中身は

include 'Common'
include 'CommonDAO'

だけが書いてある。これで、Commonの下でgradle assembleすると、まずCommonDAOのビルドがスタートする。ばっちりである。