Scala-SBT로 엿보기 실행

4358 단어 묻다SSPScalasbt
Scala 공부회에 참가하자 발표자들이 입을 맞추고 Scala의 컴파일이 느리다고 했기 때문에 SBT에서 엿보기를 수행하는 방법을 조사했습니다.
컴파일이 느리면 묻는 걸 맞추어 보면 좋지 않다! !



작업 추가



SBT에 작업을 추가하려면 다음과 같이 코드를 추가합니다.
val sstp = taskKey[Unit]("sstp send script.")

sstp := {
}

첫 번째 줄 val sstp에서이 이름의 작업을 만들겠다고 선언하고 세 번째 줄 sstp := { ... }에서 작업과 실행 내용을 연결합니다.
이것을 편지지로서 실제로 SSTP 통신을 실시해, 묻자로 실행하는 스크립트를 송신하는 처리를 작성합니다.

소켓 통신 수행



Scala만으로는 소켓 통신은 할 수 없기 때문에 Java의 라이브러리를 사용해 소켓 통신을 실시합니다.
import java.io._
import java.net.{ InetAddress, Socket }

val sstp = taskKey[Unit]("sstp send script.")

sstp := {
  val ia = InetAddress.getByName("localhost")
  val socket = new Socket(ia, 9801)
  val out = new DataOutputStream(socket.getOutputStream)
  val script = "SEND SSTP/1.1\r\n" +
               "Sender: sbt\r\n" +
               "Script: \\h\\s0SBTでコンパイルするよ\\u\\s0これでScalaのコンパイルをさらに長くできるな\\e\r\n" +
               "Charset: UTF-8\r\n"
  out.write(script.getBytes("UTF-8"))
  out.flush()
  out.close
  socket.close
}

주의점으로서는 out.write(script.getBytes("UTF-8")) 로 스크립트로 지정한 charset 의 바이트를 송신해 주세요.writeBytes 이나 ` writeUTF 로 캐릭터 라인을 송신하면(자) 묻는 측에서 캐릭터 깨짐을 일으킵니다.

2시간 빠졌습니다. .

이 상태에서 sbt sstp (을)를 실행하면(자) 묻는 것이 말합니다.

컴파일을 실행하기 전에 태스크 실행



여기까지 할 수 있으면, 나머지는 컴파일의 실행전에 태스크를 실행하도록(듯이) 넣는 것뿐입니다.
compile <<= (compile in Compile) dependsOn sstp

위의 코드를 추기하면sbt compile로 묻는 것이 말해줍니다.

이제 컴파일 시간을 즐겁게 할 수 있습니다! ! !
플러그인화는 누군가 맡겼습니다. 컴파일 시간에 맞추어 무작위로 갈아치는 멋진 플러그인 누군가 만들어주세요.

좋은 웹페이지 즐겨찾기