sbt没有生成bin目录时,暂存或发布docker+其他问题
我有一个直接的问题,如标题中所述,当运行docker:publishLocal
docker:stage
或docker:publishLocal
时, sbt
不会生成bin
目录(指向ENTRYPOINT
脚本的目录)。
我以前从来没有见过这样的行为,所以我对于如何着手有些遗憾,但是我也应该提到,我已经以不同于往常的方式来build立这个项目了。
项目设置如下,在其根目录下:
- infrastructure - app - build.sbt - target/... - another-project - project - BuildDefinition.scala - plugins.sbt - build.properties - build.sbt
在我的根BuildDefinition.scala
我已经build立了所有的项目定义,包括不需要所有我需要的app
项目。
在root的build.sbt
,我只有:
sourcesInBase in ThisBuild := false name := "fantasy-factory"
在app
目录的build.sbt中,我只有Docker相关的东西 :
dockerBaseImage in Docker := "java:8-jre" mainClass := Some("akka.Main") javaOptions in Universal ++= Seq("com.nv.microservice.as.cluster.ClusterEntryPoint") version in Docker := "latest" packageName in Docker := "basic-distributed-microservice"
什么是分阶段生成是几乎所有我需要的一切除了bin
目录有入口点脚本。 所以我确实在app
的target
目录下面看到:
- target - docker - stage - opt - docker - conf - lib - (I would have expected to see bin here) - Dockerfile - Dockerfile
这对我来说是非常令人沮丧的。 任何意见表示赞赏。
我有一个类似的问题,我解决了添加in (Compile)
到mainClass键,如下所示。 在你的build.sbt
文件中:
lazy val root = (project in file(".")) .enablePlugins(JavaServerAppPackaging) .enablePlugins(DockerPlugin) .settings( name := "my-project", mainClass in (Compile) := Some("MyFQNMainClass"), version := "1.0.0.BUILD", dockerBaseImage := "azul/zulu-openjdk:8", dockerUpdateLatest := true, dockerExposedPorts := Seq(8080), dockerRepository := Some("myrepo") ) scalaVersion := "2.11.8" sbtVersion := "0.13.9" ...
我也有plugins.sbt
文件(在project
文件夹下):
logLevel := Level.Warn dependencyOverrides += "org.scala-sbt" % "sbt" % "0.13.9" addSbtPlugin("com.earldouglas" % "xsbt-web-plugin" % "2.1.0") addSbtPlugin("com.typesafe.sbt" % "sbt-s3" % "0.8") addSbtPlugin("com.typesafe.sbt" % "sbt-native-packager" % "1.1.4") addSbtPlugin("io.spray" % "sbt-revolver" % "0.8.0")
和build.properties
在plugins.sbt
所在的文件夹中:
sbt.version=0.13.9
希望能帮助到你。