2016-11-30 19 views
0

我正在尝试将sbt-docker添加到我的播放网站的构建中,但我遇到了一个问题。由于某些原因,底层的Docker相关内容无法解决。无法解析码头相关的sbt标签

项目/ 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中

enter image description here

我也试过图像将addSbtPlugin("se.marcuslonnberg" % "sbt-docker" % "1.4.0")添加到我的project/plugins.sbt bu t我收到有关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) 
+0

当你删除导入时,'sbt compile'会工作吗?换句话说,你确定这是你的代码而不是IntelliJ的问题吗? – jackweirdy

+0

你的意思是什么进口? –

+0

对不起,我误读了错误信息。请粘贴你的plugins.sbt的内容,它看起来像你可能会导入两个不同的插件来创建码头图像,导致模糊 – jackweirdy

回答

1

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

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

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

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

+0

哦,有趣的是,PlayScala插件是否包含'sbt-native-packager'?我认为它必须,因为我实际上并没有手动包含它, –

+0

是的,它是自动包含的,所以你可以用'activator dist'命令打包你的应用程序' – Nio

+0

太棒了!这就是诀窍! –