2017-03-24 15 views
1

私はこのようrootを定義するサブプロジェクトがあります。SBTサブプロジェクトの設定をプロジェクトの値で定義すると、設定を上書きできないのはなぜですか?

lazy val root = (project in file(".")).enablePlugins(PlayScala) 

およびその他の設定を定義していませんが。

私はこのようにそれを参照する私のメインプロジェクトで:

lazy val mylib = (project in file("mylib")) 
lazy val myapp = (project in file("myapp")).dependsOn(mylib) 

問題は、この方法を参照することがscalaVersionを指定しないと、2.10がSBTのデフォルトであるため、mylibはScalaの2.10を使用して構築されていることです。

私はこのような任意の設定を上書きしようとした場合

:それらは無視されます

lazy val mylib = (project in file("mylib")).settings(Seq(scalaVersion := "2.11.8")) 

ただし、サブプロジェクトのbuild.sbtからlazy val root = ...を削除すると、メインビルドファイルから渡された設定が正常に機能します。これは、メインファイルでPlayScalaプラグインを有効にする必要があるため、サブプロジェクトのスタンドアロンビルドを中断します。

どうすればそのようなプロジェクトを参照して、いくつかの設定を上書きできますか?

これを回避するには、グローバルに設定を変更する(つまりscalaVersion in ThisBuild)がありますが、この場合はrootに固定されているプロジェクトIDなどの他の項目を上書きできるようにしたいと考えています。

答えて

0

通常、このような設定を上書きしても問題ありません。

lazy val mylib = (project in file("mylib")).settings(
    scalaVersion := "2.11.8" 
    //any other settings, I want to override, separated by comma 
    propertyA := "A", 
    propertyB := "C" 
) 

違いは、私は通常私のPlayアプリケーションでの依存関係を持っていますが、すべてがうん、それはしかし、私が何をやっていた私に含めるプロジェクトの一つである1 build.sbt

+0

の下に表示されていますgithubリポジトリからクローン化されたサブモジュールです(これはアップストリームと互換性があります)。これには、Playプラグインを有効にするためのlazy val root = ...行が含まれています。プロジェクトが定義されていないと正常に動作しますが、設定は上書きできません。< –

+0

あなたが使用しているsbtファイルを共有できますか? – Mysterion

関連する問題