2017-08-21 8 views
0

Gitter Play Scala Seedテンプレートを使用してスタータープロジェクトを作成しました。 私はthesethese命令に従って、私のプロジェクトのもう1つをサブプロジェクトとしてこのプロジェクトに追加することにしました。しかし、サブプロジェクトフォルダを追加してbuild.sbtファイルから参照しても、update(またはその依存関係)を実行すると、サブプロジェクトが見つからないというエラーが表示されます。ここでPlay以外のSbt ScalaサブプロジェクトがPlay 2.6.3プロジェクトのルートフォルダに見つかりません

は、私がプレイプロジェクト(私のベースのプロジェクト)フォルダに使用していますbuild.sbtです:

name := """play-scala-starter-example""" 

version := "1.0-SNAPSHOT" 

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

// I have also tried it explicitly: 
// lazy val lettergenerator = (project in file("lettergenerator")) 
lazy val lettergenerator = project 

resolvers += Resolver.sonatypeRepo("snapshots") 

scalaVersion := "2.12.2" 

libraryDependencies += guice 
libraryDependencies += "org.scalatestplus.play" %% "scalatestplus-play" % "3.0.0" % Test 
libraryDependencies += "com.h2database" % "h2" % "1.4.194" 

これは私のフォルダ構造です:

play-scala-starter-example 
├ app 
├ build.sbt 
├ conf 
├ lettergenerator 
│ ├ build.sbt 
│ ├ LICENSE 
│ ├ project 
│ ├ README.md 
│ ├ src 
│ └ TODO.md 
├ LICENSE 
├ logs 
├ project 
├ public 
├ README.md 
├ target 
└ test 

ここでエラーからスタックトレースです:

[info] Loading global plugins from /home/claudiusbr/.sbt/0.13/plugins 
[info] Loading project definition from /home/claudiusbr/test/play-scala-starter-example/project 
java.lang.RuntimeException: No project 'lettergenerator' in 'file:/home/claudiusbr/test/play-scala-starter-example/'. 
Valid project IDs: root 
     at scala.sys.package$.error(package.scala:27) 
     at sbt.Load$$anonfun$checkAll$2$$anonfun$apply$16.apply(Load.scala:401) 
     at sbt.Load$$anonfun$checkAll$2$$anonfun$apply$16.apply(Load.scala:396) 
     at scala.collection.immutable.List.foreach(List.scala:318) 
     at sbt.Load$$anonfun$checkAll$2.apply(Load.scala:396) 
     at sbt.Load$$anonfun$checkAll$2.apply(Load.scala:396) 
     at scala.collection.TraversableLike$WithFilter$$anonfun$foreach$1.apply(TraversableLike.scala:772) 
     at scala.collection.immutable.Map$Map1.foreach(Map.scala:109) 
     at scala.collection.TraversableLike$WithFilter.foreach(TraversableLike.scala:771) 
     at sbt.Load$.checkAll(Load.scala:396) 
     at sbt.Load$.loadURI(Load.scala:321) 
     at sbt.Load$.load(Load.scala:316) 
     at sbt.Load$.load(Load.scala:305) 
     at sbt.Load$$anonfun$4.apply(Load.scala:146) 
     at sbt.Load$$anonfun$4.apply(Load.scala:146) 
     at sbt.Load$.timed(Load.scala:1025) 
     at sbt.Load$.apply(Load.scala:146) 
     at sbt.Load$.defaultLoad(Load.scala:39) 
     at sbt.BuiltinCommands$.liftedTree1$1(Main.scala:548) 
     at sbt.BuiltinCommands$.doLoadProject(Main.scala:548) 
     at sbt.BuiltinCommands$$anonfun$loadProjectImpl$2.apply(Main.scala:540) 
     at sbt.BuiltinCommands$$anonfun$loadProjectImpl$2.apply(Main.scala:540) 
     at sbt.Command$$anonfun$applyEffect$1$$anonfun$apply$2.apply(Command.scala:59) 
     at sbt.Command$$anonfun$applyEffect$1$$anonfun$apply$2.apply(Command.scala:59) 
     at sbt.Command$$anonfun$applyEffect$2$$anonfun$apply$3.apply(Command.scala:61) 
     at sbt.Command$$anonfun$applyEffect$2$$anonfun$apply$3.apply(Command.scala:61) 
     at sbt.Command$.process(Command.scala:93) 
     at sbt.MainLoop$$anonfun$1$$anonfun$apply$1.apply(MainLoop.scala:96) 
     at sbt.MainLoop$$anonfun$1$$anonfun$apply$1.apply(MainLoop.scala:96) 
     at sbt.State$$anon$1.doX$1(State.scala:183) 
     at sbt.State$$anon$1.process(State.scala:190) 
     at sbt.MainLoop$$anonfun$1.apply(MainLoop.scala:96) 
     at sbt.MainLoop$$anonfun$1.apply(MainLoop.scala:96) 
     at sbt.ErrorHandling$.wideConvert(ErrorHandling.scala:17) 
     at sbt.MainLoop$.next(MainLoop.scala:96) 
     at sbt.MainLoop$.run(MainLoop.scala:89) 
     at sbt.MainLoop$$anonfun$runWithNewLog$1.apply(MainLoop.scala:68) 
     at sbt.MainLoop$$anonfun$runWithNewLog$1.apply(MainLoop.scala:63) 
     at sbt.Using.apply(Using.scala:24) 
     at sbt.MainLoop$.runWithNewLog(MainLoop.scala:63) 
     at sbt.MainLoop$.runAndClearLast(MainLoop.scala:46) 
     at sbt.MainLoop$.runLoggedLoop(MainLoop.scala:30) 
     at sbt.MainLoop$.runLogged(MainLoop.scala:22) 
     at sbt.StandardMain$.runManaged(Main.scala:109) 
     at sbt.xMain.run(Main.scala:38) 
     at xsbt.boot.Launch$$anonfun$run$1.apply(Launch.scala:109) 
     at xsbt.boot.Launch$.withContextLoader(Launch.scala:128) 
     at xsbt.boot.Launch$.run(Launch.scala:109) 
     at xsbt.boot.Launch$$anonfun$apply$1.apply(Launch.scala:35) 
     at xsbt.boot.Launch$.launch(Launch.scala:117) 
     at xsbt.boot.Launch$.apply(Launch.scala:18) 
     at xsbt.boot.Boot$.runImpl(Boot.scala:41) 
     at xsbt.boot.Boot$.main(Boot.scala:17) 
     at xsbt.boot.Boot.main(Boot.scala) 
[error] No project 'lettergenerator' in 'file:/home/claudiusbr/test/play-scala-starter-example/'. 
[error] Valid project IDs: root 
[error] Use 'last' for the full log. 
Project loading failed: (r)etry, (q)uit, (l)ast, or (i)gnore? q 
私は what seems to be a similar question for a different error見て試してみました

が、のnothin g私の問題に役立つように見える。

私はlettergeneratorためsbtバージョン0.13.16Scala 2.12.3を使用していますが、私は私のplayプロジェクトのbuild.sbtのために、それぞれこれらと0.13.15/2.12.2の両方を試してみましたが、どちらも働きました。

私は明らかに何かを見逃している可能性がありますが、これまでに何ができるかわからないので、助けていただければ幸いです。

+0

sbtコンソールの* projects *コマンドの出力は何ですか? – jrook

+0

実際にはコンソールには到達しません。それは更新エラーのようですので、コンソールに入るために必要なすべての依存関係を解決することはできません。 – claudiusbr

答えて

1

私は、つまり、私はお勧め、複数のサブプロジェクトで

lazy val lettergenerator = project 

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

を交換するあなたのプロジェクトの右のサブディレクトリにlettergeneratorをポイントする必要があると思います既定の再生レイアウトからdefault SBT layoutに切り替えて、再生アプリケーションを別のサブディレクトリ、つまりbackendまたはに移動しますまたは何でも。

異なるサブプロジェクトに複数のbuild.sbtファイルを用意することをお勧めします。私の経験では、これはうまくスケールされず、サブプロジェクトがより複雑になるにつれて、すぐに混乱するようになります。

代わりに、1つのトップレベルのbuild.sbtを維持し、プロジェクトごとのすべての設定を.settingsに定義することをお勧めします。プロジェクト全体に影響を与える一般的な設定(例えば、version)については、rootプロジェクト(simple example、またはmore complex real world example)で.settings(inThisBuild(…))を使用します。

+0

私もそれを試みました(変数名から推論させるのではなく、明示的に宣言しました)。しかし、それでも動作しませんでした。 これは後でサブプロジェクトオプションを試してみる必要があります。これは仕事以外のプロジェクトなので、ここで結果を投稿します。 – claudiusbr

+0

これで、Playプロジェクトをサブプロジェクトにする別の解決策は、将来のプロジェクト(アップヴォート)にとって非常に役立ちますが、この特定のインスタンスで標準のSBTを作成することはできません私はそれのためのbuild.sbtファイルを変更せずにこれを行うことができるシナリオを見ることができないので。標準のものはPlayのものに結合してはいけません。それはドキュメントがこれが可能である(またはそうすべきである)ことを暗示しているように思われるので、私はこれをこのように保つことができる解決策を見つけようとしています。 – claudiusbr

+1

両方のプロジェクトを別のルートプロジェクトにネストされた別々のフォルダに移動した後、Sbtは自分のレタージェネレータを見つけました。あなたが提案したように、問題がbuild.sbtファイルに関連しているように見えます。もう一つの例外が出てきますが、少なくともプロジェクトはコンパイル中です。 ご協力いただきありがとうございます。 – claudiusbr

関連する問題