2017-04-03 10 views
0

私は、それぞれ独自のbuild.sbtファイルを持つ複数のモジュールを持つsbtプロジェクトを持っています。ルートプロジェクトでsbtマルチモジュールプロジェクト別のモジュールから特性をインポートする

、私は次のようしている:

lazy val module = (project in file(".")) 

    .settings(
    name := "Game subpart", 
    version := "0.1.0-SNAPSHOT" 
) 

とプロジェクトのレイアウトは何かを探します:すべてのサブモジュールで

lazy val commonSettings = Seq(
    organization := "com.game.scala", 
    sourcesInBase := false, 
    fork in run := true, 
    scalaVersion := "2.12.1" 
) 

lazy val common = project.settings(commonSettings) 

lazy val original = project.settings(commonSettings).dependsOn(common) 

lazy val functional = project.settings(commonSettings).dependsOn(common) 

lazy val root = (project in file(".")) 
    .aggregate(original, functional) 
    .settings(commonSettings) 

build.sbtはほとんど同じです次のようになります。

問題は、functionalモジュール内から、私は私はcommonモジュールで宣言された形質をインポートしてみてくださいF、私はそれが利用できないというエラーが表示されます。私は

Error:(1, 12) object game is not a member of package com

import com.game.scala

何をしないのですか?

答えて

1

これは、commonプロジェクトを編集したことがないためです。 dependsOnメソッドは、他のプロジェクトにのみ依存関係を追加しますが、明示的に要求されない限り、そのプロジェクトに対するアクションは実行しません。 functionalモジュールがコンパイルされるたびに依存関係を再コンパイルしたい場合は、dependsOn(common)aggregate(common)の両方を実行する必要があります。

+0

答えていただきありがとうございますが、問題は解決しませんでした。とにかくsbtは私に十分な頭痛を与えました、私はgradleに切り替えることにしました – smac89

関連する問題