kaakaa Blog

この世は極楽 空にはとんぼ

Gradleでマルチプロジェクトビルド その2

昨日の続きで、ちょっと気になったことを。

Gradleでマルチプロジェクト組んだ時、そのプロジェクトをJenkinsでCIするときはどうなるんだろうって疑問。

Gradleは自動で対象プロジェクトがマルチプロジェクトに含まれているかを確認してくれるけど、Eclipseで開発してる時とJenkinsに載せた時ってプロジェクト同士の相対パスが変わってしまう。

ちょっと確認。

jobs/
  sample1/
    workspace/
      build.gradle
      settings.gradle
  sample2/
    workspace

この時、sample1のbuild.gradleからsample2のwordspace内のソースが見たい。

という時は、以下のようにsettings.gradleを書けば良いみたい。

includeFlat '../sample2/workspace'

以下のビルドタスクをbuild.gradleに用意して確認。

allprojects{
        task showRoot <<{
                def file = file(new File('.'))
                println "Root is ${file.path}"
        }
}

showRootタスクを実行。

kaakaa_hoe@[workspace]$ gradle showRoot
:showRoot
Root is /Users/kaakaa_hoe/Documents/gradle-1.0/mysamples/EffectiveGradle/chapter7/jenkins/jobs/sample1/workspace
:../sample2/workspace:showRoot
Root is /Users/kaakaa_hoe/Documents/gradle-1.0/mysamples/EffectiveGradle/chapter7/jenkins/jobs/sample2/workspace

BUILD SUCCESSFUL

Total time: 2.977 secs

includeFlatで宣言した後、フラットでないディレクトリを指定するのは気持ち悪いけど。

なんかいい方法あったりするのかな。