2016-04-15 33 views
2

scalapbの構文を理解するのが難しいです。特に、マルチプロジェクトSBTビルド用に複数の.protoソースディレクトリを追加しようとしています。マルチプロジェクトSBTビルドに複数のscalapbソースディレクトリを追加する

次のように私のプロジェクト構造は次のように

/build.sbt 
/main/src/protobuf 
/common/main/src/protobuf 
/client/main/src/protobuf 

私build.sbtは次のとおりです。

name := "myApp" 

import Dependencies._ 

import com.trueaccord.scalapb.{ScalaPbPlugin => PB} 

val protoDirectories = Seq(
    file("common/src/main/protobuf"), 
    file("client/src/main/protobuf") 
) 

sourceDirectories in PB.protobufConfig ++= protoDirectories 

PB.protobufSettings ++ Seq(
    flatPackage := false 
) 

lazy val common = (project in file("common")). 
    settings(Commons.settings: _*). 
    settings(libraryDependencies ++= commonDependencies) 

lazy val client = (project in file("client")). 
    settings(Commons.settings: _*). 
    settings(libraryDependencies ++= clientDependencies). 
    dependsOn(common) 

私はsbt compileを実行すると、私は次のようなエラーメッセージが出ます:

[error] Reference to undefined setting: 
[error] 
[error] sphere/*:sourceDirectories from myApp/*:sourceDirectories (<path_to_project_dir>\build.sbt:11) 
[error]  Did you mean myApp/protobuf:sourceDirectories ? 

誰かが私を正しい方向に向けることができますか?私は

EDIT [OK]を

...ここにいくつかの基本的な概念を理解するために失敗してるので、私はprotoDirectoriesのための間違ったシーケンスを指していました。私は新しい変更を反映するためにbuild.sbtを修正しました。 .protoファイルがサブプロジェクトでコンパイルされていないという問題がまだあります。私の.protoファイルをroot/main/src/protobufに移動すると、うまくコンパイルされます。

答えて

1

ファイルが両方ともsrc/main/protobufである場合は、両方のプロジェクトでScalaPBプラグインを個別に有効にする必要があります。この例では、インポート検索パスを設定する方法も示しています。完全な例は次のとおりです。https://github.com/thesamet/scalapb-test/tree/multiproject

import com.trueaccord.scalapb.{ScalaPbPlugin => PB} 

version in PB.protobufConfig := "3.0.0-beta-2" 

lazy val common = (project in file("common")). 
    settings(PB.protobufSettings) 

lazy val client = (project in file("client")). 
    settings(PB.protobufSettings ++ Seq(
    // If you want proto files in client to import proto files in common. 
    PB.includePaths in PB.protobufConfig += file("common/src/main/protobuf") 
)). 
    dependsOn(common) 
関連する問題