私はそれらの間に依存関係があるいくつかのモジュールを開発していて、それらすべてを1つのIDEAプロジェクトで一緒に作業したいと思っています。私はsbt-ideaを使用して、sbtビルド定義からIDEAプロジェクトを生成しています。これは、個々のプロジェクトに最適です。ただし、複数モジュールの場合、これまでに試したことはうまくいきません。
sbt-ideaを使用して、モジュールごとに個別にIDEA.imlファイルを生成します。次に、マスターIDEAプロジェクトを最初から作成し、それらのモジュールをそれに追加します。これにより、モジュールソースはすべて同じウィンドウで編集可能になりますが、それらの間の依存関係は追跡されません(したがって、fooプロジェクト内のソースからbar内のソースに移動しようとすると、ローカルソースではなく、インポートされたライブラリバージョンのbarに移動します)。
親プロジェクトのBuild.scalaに次のようなものが含まれているsbtマルチプロジェクトビルド(別名サブプロジェクト)を使用します。
lazy val foo = Project(id = "foo", base = file("foo"))
lazy val bar = Project(id = "bar", base = file("bar")) dependsOn(foo)
sbt-ideaが、追跡されたサブプロジェクト間の依存関係を持つマスターIDEAプロジェクトを生成するという点で、これはほぼ機能します。ただし、2つの注意点があります。
- サブプロジェクトがマスタープロジェクトのサブディレクトリに存在する必要がある(つまり、
file("../foo")
許可されていない)ことは、sbtの制限のようです。これは本当に私が望んでいることではありませんが(「utils」や「commons」パッケージなどのモジュールが2つの異なるマスタープロジェクトで使用されている場合はどうなりますか?)、私はそれを使用できます。 - 私のサブプロジェクトの1つには、独自のサブプロジェクトがあります。sbt自体がこれらのネストされたプロジェクトを正しく処理するかどうかはわかりませんが、いずれの場合もsbt-ideaによって無視されます。明らかに、ネストされたサブプロジェクトをマスタープロジェクトに再帰的に含める必要があります。
要約すると、すでにサブプロジェクトが含まれている可能性のあるモジュールを、編集しやすいように依存関係を追跡した1つの大きなIDEAプロジェクトに収集したいと思います。どうすればいいですか?ありがとう!