Я хочу использовать плагин ScalaPB в моем проекте SBT.Но когда я пытаюсь скомпилировать проект, я получаю сообщение об ошибке, в котором говорится, что «объект gen не является членом пакета scalapb».Так как мне настроить этот плагин для работы с моим проектом?
Я следовал инструкциям на странице Github, и он не работал.
Мой проект имеет следующую структуру, другими словамистандартная структура проекта Maven:
.
├── build.sbt
├── ci
│ └── checkstyle
├── LICENSE
├── project
│ ├── build.properties
│ ├── Dependencies.scala
│ ├── plugins.sbt
│ ├── project
│ └── target
├── src
│ ├── main
│ └── test
└── version.sbt
Это файл Dependencies.scala
:
import sbt._
object Dependencies {
lazy val scalatestVersion = "3.0.5"
lazy val scalamockVersion = "4.1.0"
lazy val scalaPbcVersion = "0.8.3"
// Libraries for Protobuf
val scalaPbc = "com.thesamet.scalapb" %% "compilerplugin" % scalaPbcVersion
// Libraries for Testing
val scalatest = "org.scalatest" %% "scalatest" % scalatestVersion % Test
val scalamock = "org.scalamock" %% "scalamock" % scalamockVersion % Test
// Projects
val groupBackendDependencies = Seq(
scalatest, scalamock, scalaPbc)
}
Это файл plugins.sbt
:
// The Typesafe repository
resolvers += "Typesafe repository" at "https://repo.typesafe.com/typesafe/maven-releases/"
// for autoplugins
addSbtPlugin("com.typesafe.sbt" % "sbt-native-packager" % "1.3.6" withSources())
dependencyOverrides += "com.puppycrawl.tools" % "checkstyle" % "8.12"
// Scala checkstyle
addSbtPlugin("org.scalastyle" %% "scalastyle-sbt-plugin" % "1.0.0")
// Scala Protobuf
addSbtPlugin("com.thesamet" % "sbt-protoc" % "0.99.19")
Thisэто файл build.sbt
.Именно здесь происходит ошибка.
/** ****************************************************************************
* <REDACTED>
* ****************************************************************************
*/
enablePlugins(UniversalPlugin)
/** ****************************************************************************
* Application related configurations
* ****************************************************************************
*/
organization := "<REDACTED>"
name := "<REDACTED>"
packageName := "<REDACTED>"
/** ****************************************************************************
* Compilation related
* ****************************************************************************
*/
scalaVersion := "2.12.7"
scalacOptions ++= Seq("-target:jvm-1.8",
"-unchecked",
"-deprecation",
"-encoding", "utf8",
"-feature",
"-Ywarn-adapted-args",
"-Ywarn-dead-code")
javacOptions in(Compile, compile) ++= Seq("-source", "11",
"-target", "11",
"-g:lines")
logLevel := sbt.Level.Warn
exportJars := true
libraryDependencies ++= Dependencies.groupBackendDependencies
/** ****************************************************************************
* Packaging related configurations
* ****************************************************************************
*/
packageName in Universal := s"${packageName.value}-${version.value}"
exportJars := true
//By default, the dist task will include the API documentation in the generated package.
//Below instruction will exclude them/
sources in(Compile, doc) := Seq.empty
publishArtifact in(Compile, packageDoc) := false
/** ****************************************************************************
* CI : Scala Checkstyle
* Ref: http://www.scalastyle.org/sbt.html
* Usage: sbt scalastyle
* ****************************************************************************
*/
lazy val scalaCheckstyle = "ci/checkstyle/scala/scalastyle-config.xml"
scalastyleConfig := baseDirectory(_ / scalaCheckstyle).value
scalastyleFailOnWarning := true
/** ****************************************************************************
* CI : Pipeline Simulation
* Usage: sbt pipeline-ci
* ****************************************************************************
*/
commands += Command.command("pipeline-ci") { state =>
"clean" ::
"compile" ::
"test" ::
state
}
/**
* The error occurs here.
*/
PB.targets in Compile := Seq(
scalapb.gen() -> (sourceManaged in Compile).value
)
Я ожидаю, что этот проект должен компилироваться без ошибок при запуске
sbt clean compile
Но вместо этого я получаю эту трассировку стека
/home/my-project/build.sbt:73: error: object gen is not a member of package scalapb
scalapb.gen() -> (sourceManaged in Compile).value
^
[error] Type error in expression