別リポジトリを取り込むことでコードの共通化ができるなど、
便利と言われるgit submoduleですが、
取り込まれる側(マルチプロジェクト構成)の親build.gradle.ktsって邪魔じゃないですか?
(Kotlinのバージョン指定が重複してます、とか言われる。。)
そういうググっても出てこなかったので、書きます。
環境
- Gradle 6.8.1
- Kotlin 1.5.20
- Git 2.28.0
- 取り込む側も、取り込まれる側もマルチプロジェクト構成
取り込まれる側.
sub-project/
|-sub-project-child
| |
| -gradle.gradle.kts
|
-build.gradle.kts
取り込む側.
root-project/
|-root-project-child
| |
| -gradle.gradle.kts
|
|-sub-project/
| |-sub-project-child
| | |
| | -gradle.gradle.kts
| |
| -build.gradle.kts // …(B)
|
-build.gradle.kts // …(C)
-settings.gradle.kts // …(A)
いきなり解答
(A)settings.gradle.kts
rootProject.name = "root-project"
include(
..
":custom-name"
)
project(":custom-name").projectDir = file("sub-project/sub-project-child")
これで、sub-projectのbuild.gradle.ktsに悩まされずに、欲しかったsub側の小プロジェクトだけをroot側で取り込むことができました。
(おまけ)エラーが出る例
(エラーが出る例)(A)settings.gradle.kts
rootProject.name = "root-project"
include(
..
":sub-project:sub-project-child"
)
こうやって子プロジェクトを読み込むケースもありますが、
こうすると、build.gradle.kts(B)も読み込んでしまい、build.gradle.kts(C)と重複してKotlin versionなどが定義されていることでエラーが発生しました。