2016-10-22 1 views
0

내 Play 응용 프로그램에 꿀꺽 꿀꺽 마시고 싶습니다. 명령을 실행할 수 있도록 PlayRunHook 개체를 만들었습니다. ,하지만 내가 할 때 sbt run 개체를 찾을 수 없다는 오류가 나타납니다. build.sbt에서 다음build.sbt의 객체에 대한 참조를 만들 수 없습니다. "오류 : 찾을 수 없음 : 값 후크"

package hooks 

object Gulp extends CommandHook { 

    override def beforeStarted(): Unit = { 
    exec("gulp") 
    } 
} 

: 그리고 여기 내 후크입니다

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

scalaVersion := "2.11.7" 

scalacOptions ++= Seq("-deprecation") 

libraryDependencies ++= Seq(
    "junit" % "junit" % "4.10" % "test", 
    "org.reactivemongo" %% "play2-reactivemongo" % "0.11.14", 
    "com.typesafe.play" %% "play" % "2.5.0", 
    "com.typesafe.play" %% "play-netty-server" % "2.5.0" 
) 

PlayKeys.playRunHooks += hooks.Gulp() 

하지만 내가 얻을 :

build.sbt:18: error: not found: value hooks 
PlayKeys.playRunHooks += hooks.Gulp() 
+0

내 문제를 해결하는 데 도움이되었지만 대신 'taskKey'를 사용했습니다. 나는 왜 build.sbt가'hooks' 값을 찾을 수 없는지에 대한 질문에 대답 할 때 대답을 받아 들일 것입니다 (코드는'project /'에 있어야합니다) – danbroooks

답변

2

당신은 다음과 같은 디렉토리project/에 꿀꺽 object을 만들어야합니다 :

당신의 build.sbt에서 다음 0
import play.sbt.PlayRunHook 
import sbt._ 

object Gulp { 
    def apply(base: File): PlayRunHook = { 

    object GulpProcess extends PlayRunHook { 

     override def beforeStarted(): Unit = { 
     Process("gulp", base).run 
     } 
    } 

    GulpProcess 
    } 
} 

: 자세한 내용은

PlayKeys.playRunHooks += Gulp(baseDirectory.value) 

guide 확인합니다.

0

편집 : 실제로 최종 답변을 얻었으므로이 대체 답변은 앱에 요청할 때마다 gulp bundle 명령을 실행합니다. PlayRunHook 접근법을 사용하면 다른 라이프 사이클 후크가 생기고 결국 앱을 시작할 때 gulp watch을 트리거하기 위해 beforeStarted (허용 된 답변에서와 같이)에 연결됩니다.

아래쪽 라인은 배포 할 때 gulp watch을 변경하고 배포 할 때 gulp build을 변경할 수 있습니다. 아직 그 단계에 있지는 않습니다. build.sbt이 값 hooks 그러나 컴파일시 gulp bundle를 실행하고자하는 내 문제를 해결하기 위해, (코드 디렉토리 project/에 있어야합니다)를 찾을 수없는 이유


가 허용 된 대답은 설명하고,이 용액을했다 :

import sbt._ 

// ... 

lazy val gulp = taskKey[Unit]("Build frontend assets") 
gulp := { 
    println("gulp bundle" !!) 
} 

compile in Compile <<= (compile in Compile).dependsOn(gulp) 
관련 문제