如何在使用执行 sbt docker:publishLocal 时从编译中排除 类?
How to exclude classes from compiling when using executing sbt docker:publishLocal?
我的 build.sbt
文件有一些配置可以使用 AkkaGrpcPlugin
和 DockerPlugin
因为我在 docker 中心发布图像。
lazy val akkaGrpcVersion = "1.0.2"
lazy val protobufVersion = "3.11.4"
enablePlugins(JavaAppPackaging, JavaServerAppPackaging, AkkaGrpcPlugin, DockerPlugin)
akkaGrpcGeneratedLanguages := Seq(AkkaGrpc.Java)
libraryDependencies ++= Seq(
......
)
dockerUsername := Some("felipeogutierrez")
sbt compile
和 sbt run
工作正常,但是命令 sbt docker:publishLocal
不起作用,因为它试图在 target
目录。
[error] /home/felipe/workspace-idea/explore-akka/target/scala-2.12/
akka-grpc/main/org/github/felipegutierrez/explore/akka/rpc/greeting/HelloRequest.java:29:7:
not found: type UnusedPrivateParameter
[error] UnusedPrivateParameter unused) {
[error] ^
这些 类 属于 package org.github.felipegutierrez.explore.akka.rpc.greeting
的 类,当我 运行 sbt docker:publishLocal
。我试过这个 solution 但它没有用。或者找到一些解决方案来完成这项工作。
问题是我使用 AkkaGrpcPlugin
生成了 Java 文件,它们被放置在我项目的 target
目录中。所以 docker 编译器看不到它。我从 build.sbt
中删除了 AkkaGrpcPlugin
和 akkaGrpcGeneratedLanguages := Seq(AkkaGrpc.Java)
并安装了 protobuf 编译器以自己生成 Java 文件。
sudo apt install protobuf-compiler
protoc --java_out=main/java main/protobuf/helloworld.proto
然后文件现在生成在src
目录中,Docker可以看到它们。因此,我不必再在 build.sbt
.
中排除文件
我的 build.sbt
文件有一些配置可以使用 AkkaGrpcPlugin
和 DockerPlugin
因为我在 docker 中心发布图像。
lazy val akkaGrpcVersion = "1.0.2"
lazy val protobufVersion = "3.11.4"
enablePlugins(JavaAppPackaging, JavaServerAppPackaging, AkkaGrpcPlugin, DockerPlugin)
akkaGrpcGeneratedLanguages := Seq(AkkaGrpc.Java)
libraryDependencies ++= Seq(
......
)
dockerUsername := Some("felipeogutierrez")
sbt compile
和 sbt run
工作正常,但是命令 sbt docker:publishLocal
不起作用,因为它试图在 target
目录。
[error] /home/felipe/workspace-idea/explore-akka/target/scala-2.12/
akka-grpc/main/org/github/felipegutierrez/explore/akka/rpc/greeting/HelloRequest.java:29:7:
not found: type UnusedPrivateParameter
[error] UnusedPrivateParameter unused) {
[error] ^
这些 类 属于 package org.github.felipegutierrez.explore.akka.rpc.greeting
的 类,当我 运行 sbt docker:publishLocal
。我试过这个 solution 但它没有用。或者找到一些解决方案来完成这项工作。
问题是我使用 AkkaGrpcPlugin
生成了 Java 文件,它们被放置在我项目的 target
目录中。所以 docker 编译器看不到它。我从 build.sbt
中删除了 AkkaGrpcPlugin
和 akkaGrpcGeneratedLanguages := Seq(AkkaGrpc.Java)
并安装了 protobuf 编译器以自己生成 Java 文件。
sudo apt install protobuf-compiler
protoc --java_out=main/java main/protobuf/helloworld.proto
然后文件现在生成在src
目录中,Docker可以看到它们。因此,我不必再在 build.sbt
.