【问题标题】:Can't resolve docker related sbt tags无法解析 docker 相关的 sbt 标签
【发布时间】:2017-04-14 06:16:07
【问题描述】:

我正在尝试将 sbt-docker 添加到我的 play 网站的 sbt 版本中,但我遇到了问题。由于某种原因,底部与 docker 相关的东西都无法解决。

项目/plugins.sbt

logLevel := Level.Warn

resolvers ++= Seq(
    "Typesafe repository" at "http://repo.typesafe.com/typesafe/releases/"
)

addSbtPlugin("com.typesafe.play" % "sbt-plugin" % "2.5.9")

build.sbt

name := "personal_site"

version := "1.1"

lazy val `personal_site` = (project in file(".")).enablePlugins(PlayScala,DockerPlugin)

scalaVersion := "2.11.7"

libraryDependencies ++= Seq( jdbc , cache , ws , specs2 % Test )

unmanagedResourceDirectories in Test <+=  baseDirectory ( _ /"target/web/public/test" )  

resolvers += "scalaz-bintray" at "https://dl.bintray.com/scalaz/releases"

dockerfile in docker := {
    val targetDir = "/usr/src"

    new Dockerfile {
        from("flurdy/activator")
        //More goes here
    }
}

imageNames in docker := Seq(
    // Sets the latest tag
    ImageName(s"${name.value}:latest"),

    // Sets a name with a tag that contains the project version
    ImageName(
        namespace = None,
        repository = name.value,
        tag = Some("v" + version.value)
    )
)

这是它在 IntelliJ 中的样子

我也尝试将addSbtPlugin("se.marcuslonnberg" % "sbt-docker" % "1.4.0") 添加到我的project/plugins.sbt,但我收到了关于DockerPlugin 被导入两次的错误。

~/Sync/Projects/Programming/Personal_Site (master ✘)✹ ᐅ  sbt clean
[info] Loading project definition from /home/ryan/Sync/Projects/Programming/Personal_Site/project
/home/ryan/Sync/Projects/Programming/Personal_Site/build.sbt:5: error: reference to DockerPlugin is ambiguous;
it is imported twice in the same scope by
import _root_.sbtdocker.DockerPlugin
and import _root_.com.typesafe.sbt.packager.docker.DockerPlugin
lazy val `personal_site` = (project in file(".")).enablePlugins(PlayScala,DockerPlugin)

【问题讨论】:

  • 删除导入后sbt compile 会起作用吗?换句话说,您确定这是您的代码而不是 IntelliJ 的问题吗?
  • 进口是什么意思?
  • 对不起,我看错了错误信息。请粘贴您的 plugins.sbt 的内容,看起来您可能正在导入两个不同的插件来创建 docker 图像,从而导致歧义
  • 我做了,它在顶部
  • 当我得到错误是因为我试图添加这个addSbtPlugin("se.marcuslonnberg" % "sbt-docker" % "1.4.0")

标签: scala docker playframework sbt sbt-docker


【解决方案1】:

尝试将您的 build.sbt 配置更改为此。

lazy val root = (project in file(".")).enablePlugins(sbtdocker.DockerPlugin, PlayScala)

它通过使用 DockerPlugin 的全名来消除歧义,因为我相信 sbt-native-packager 对其 Docker 插件使用相同的名称。

也许值得向作者的 repo 提出 Github 问题,以便他们可以在项目文档中记录它。

【讨论】:

  • 哦,有意思,PlayScala 插件是否包含sbt-native-packager?我认为它必须是因为我实际上并没有手动包含它,
  • 是的,它会自动包含在内,因此您可以使用 activator dist 等命令打包您的应用程序
猜你喜欢
  • 1970-01-01
  • 2020-04-24
  • 1970-01-01
  • 2013-02-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-02-27
  • 2022-01-04
相关资源
最近更新 更多