マルチプロジェクト機能を使って、アプリ開発の傍ら、マルチプラットフォームな共通モジュールも一緒に開発しちゃおう
タイトルながっ!
皆さんは個人でアプリを作る時、 ひとつのプロジェクトの中に全てのコードを入れちゃって、 別のアプリを作る時は共通で使えそうな部分をコピって使いまわしていますか?
私は必ず共通ライブラリを作りながらアプリを作っています。
でも、今までIntelliJ IDEAでのマルチプロジェクトなアプリ開発のやり方が分からず、 共通モジュールのソースディレクトリを、アプリのソースディレクトリ内にシンボリックリンクを貼って、 一緒にビルドすると言うやり方をやっていました( ´•ᴗ•ก; )
と言うわけで、 今回開発中のプロジェクト(メインプロジェクト)に開発中のマルチプラットフォームな共通モジュール(サブプロジェクト)をインクルードすることで、 並行開発できるようにします。
メインプロジェクト、サブプロジェクトが既に存在していて、 それぞれが単独でビルドできる状態になっている前提です。
また、バージョンカタログも導入済として書きますので、 導入していなければ、先に前の記事を参考に導入を済ませてください。
尚、触るのはメインプロジェクト側だけです。
サブプロジェクト側でエラーが出たとしても、 サブプロジェクトが単独でビルドできる限り、 メインプロジェクト側の設定の問題だと思います。 たぶん( ´•ᴗ•ก; )
なので、まずはサブプロジェクトのインクルードの設定です。
settings.gradle.kts
・・・
rootProject.name = "HelloWorld"
include(":CommonLib")
project(":CommonLib").projectDir = File("X:/foo/bar/CommonLib")
:CommonLib
は各自のサブプロジェクト名に置き換えてください。
File()
の中についてもサブプロジェクトの場所に置き換えてください。
次に、メインプロジェクト側からサブプロジェクトをビルドできるようにする設定と、 ソースから見えるようにする設定を加えます。
build.gradle.kts
plugins { // kotlin("jvm") version "2.0.0" alias(libs.plugins.kotlinJvm) alias(libs.plugins.kotlinMultiplatform) apply false } group = "com.exsample" version = "1.0-SNAPSHOT" dependencies { implementation(project(":CommonLib")) }
サブプロジェクト側のプラグインの内、メインプロジェクトで使われていないものを持ってきて、
更に後ろにapply false
を付け加えてください。
最後に、サブプロジェクトをimplementation
して完了です。
IntelliJ IDEA 2024.1.4 Community Edition、Gradle 8.5で確認しました。