2016-11-30 38 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

太棒了!這就是訣竅! –