gradleでモジュール名を指定したくなった時にやる設定

マルチモジュールなAndroidアプリを書いている時などに、稀によくモジュールの階層が深いとか、同じディレクトリ名(例えばlib)のものが複数ある事がある。 そんな時にモジュール名を指定したくなったりするので、その設定のやり方のメモ

使いたいモジュールが

foo/bar/lib
baz/lib

にあった場合 何も考えない場合は settings.gradleに

include ':app', 'foo:bar:lib', ':baz:lib'

のような記述がされて、AndroidStudio上で下図のような表示がされる

f:id:hidey_k:20180322072728p:plain

このままだと、foo,bar,bazという謎の空のモジュールがあったりして気持ち悪いので、適切な管理をしたくなる。

そういった時にsettings.gradleに

include ':app', ':bar', ':baz'
project(':bar').projectDir = new File('foo/bar/lib')
project(':baz').projectDir = new File('baz/lib')

と書くと

f:id:hidey_k:20180322073458p:plain

となってスッキリ

という記事にしようと思ったらAndroidStudioのimport Moduleでほぼ同じことができそうだった

f:id:hidey_k:20180322074747p:plain

f:id:hidey_k:20180322074905p:plain

ただ、この場合は親ディレクトリと同じ名前は付けられないっぽいので、親ディレクトリと同じ名前にしたい場合は一旦適当な名前を付けてからsettings.gradleを変更する必要がありそう