SBT生成的Docker容器无法打包子项目

阿鲁纳斯姆

我有一个包含以下项目的多项目build.sbt文件:

lazy val utils = (project in file("utils"))
  .settings(
    Seq(
      publishArtifact := false
    )).[...]


lazy val api = (project in file("api"))
  .dependsOn(utils)
  .settings(commonSettings: _*)
  .enablePlugins(JavaAppPackaging, DockerPlugin)
  .settings(publish := {})
  .settings(
    Seq(
      packageName in Docker := "my-api",
      dockerBaseImage := "java:8",
      mainClass in Compile := Some("com.path.to.Main"),
      publishArtifact := false,
      unmanagedJars in Compile += file("jars/somejars.jar")
    ))

API建立在Finch框架之上。我使用创建了API的docker镜像sbt api/docker:publishLocal,然后在本地运行。但是,似乎utils子项目类未与最终容器打包在一起,因此我得到了多个

java.lang.ClassNotFoundException:

异常类型。对于没有子项目依赖项的类似项目,一切运行顺利,我也没有问题。

我在插件配置中缺少什么吗?我以为.dependsOn()应该在项目docker映像中提供依赖类。

阿鲁纳斯姆

回答我自己的问题,但事实证明,这是从属项目的默认行为sbt-native-packager,或者更确切地说sbt,是从属项目的默认行为publishArtifact := false

一种对我有用的解决方法是将上述更改为publish/skip := true

有关此问题的更多信息,请参见:https//github.com/sbt/sbt-native-packager/issues/1221

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章