2012-10-10 2 views
0

Ant 대상의 SBT (있는 경우)는 무엇입니까? 예를 들어, 개미의 build.xml 파일의 코드 조각은 다음과 같습니다Ant 대상의 SBT

<target name="runClient" description="run client"> 
    <java classname="client.Client" fork="true"> 
     <jvmarg value="-Djava.rmi.server.codebase=${client_web_codebase}"/> 
     <jvmarg value="-Djava.security.policy=policy"/> 
     <arg value="localhost"/> 
     <classpath> 
      <pathelement location="dist/client.jar"/> 
     </classpath> 
    </java> 
</target> 

을 그리고 나는 XML에 지정된에 jvmargs와 응용 프로그램 "client.Client"를 시작 ant runClient 같은 것을 할 것 ..입니다 거기에 SBT와 동등한 방법, 또는 SBT가 Ant에 연결하여이를 수행하는 방법?

답변

6

Sbt Tasks을 사용하면이를 수행 할 수 있습니다. 다른 작업 및/또는 설정 (예를 들어, 프로젝트의 기본 디렉토리)에 따라 달라질 수 있습니다 정의 태스크 :

import sbt._ 
import Keys._ 

object TestBuild extends Build { 
    lazy val runClient = TaskKey[Unit]("runClient", "run client") 

    lazy val root = Project("Test", file("."), 
    settings = Defaults.defaultSettings ++ Seq(
    runClient <<= baseDirectory map { 
     base => 
     val clientWebCodebase = base/"yourpath" 
     val opts = Seq("-Djava.rmi.server.codebase=" + clientWebCodebase, 
      "-Djava.security.policy=policy", 
      "-cp", "dist/client.jar", 
      "client.Client", "localhost" 
     ) 
     Fork.java.fork(None, opts, None, Map(), false, StdoutOutput) 
     } 
    ) 
) 
} 

등의 작업 정의를 갖는 당신은이 중 하나를 실행할 수 있습니다

sbt runClient 

또는 SBT에

쉘 : runC + 탭 :

+0

최고, 감사 :

>runClient 

당신은 탭 완성 기능을 사용 할 수 있습니다! – adelbertc